Jak formátovat řetězce v Go

Jak formátovat řetězce v Go

Při psaní kódu Go zjistíte, že formátování řetězců je v mnoha situacích velmi užitečné. Možná analyzujete vstupy nebo vytváříte složitější výstup než jednoduché zřetězení. Možná pracujete s jinými typy než s prostými řetězci.





Formátování řetězců v Go využívá známý proces a syntaxi funkce printf, kterou také používají jazyky od Javy po Haskell.





Go poskytuje různé metody formátování řetězců v fmt balík. Pro formátování řetězce můžete použít funkce a slovesa v závislosti na operaci nebo vstupech, které chcete formátovat.





Formátování řetězce v Go

Funkce v balíčku fmt jsou podobné jako u protějšků, např funkce printf v bash nebo C. Go odvozuje svá slovesa pro formátování z C.

Používáš slovesa formátování řetězců jako zástupné symboly pro hodnoty proměnných v obsahujícím řetězci. Tento formátovací řetězec pak můžete předat funkci jako Printf , spolu s hodnotami odpovídajícími těmto zástupným symbolům.



Nemůžete použít slovesa formátování řetězce s Tisk a Println metody. Můžete je použít s metodami jako Printf a Sprintf .

fmt.Println("This is a test %v", 90) 
fmt.Printf("This is a test %v", 90)

The %v verb vypíše libovolnou hodnotu ve výchozím formátu. The Println metoda nerozpozná slovesa a vypíše jakékoli argumenty, které obdrží. The Printf a Sprintf obě funkce formátují první argument řetězce, který jim předáte.





skvělé věci, které můžete dělat s flash diskem
  výsledek formátování celých čísel

Funkce formátování řetězců v balíčku fmt

Formátování řetězců v programovací jazyk Go vyžaduje, abyste použili funkci formátování řetězce a sloveso. Funkce vrátí naformátovaný řetězec a slovesa jsou zástupnými symboly pro vstupy do řetězce.

The Printf metoda formátuje vstup podle specifikátoru formátu a vrací počet zapsaných bajtů nebo chyb.





fmt.Printf("This is a test %v", 90) 

Obvykle se při používání nebudete muset obávat chyb Printf metoda.

The Sprintf metoda formátuje podle zadaného formátu a vrátí výsledek jako řetězec.

var result = fmt.Sprintf("This is a test %v", 90) 

The Fprintf metoda naformátuje řetězec a zapíše jej do zapisovače (metody, které implementují io.Spisovatel rozhraní)

// write data to standard output 
result, err = fmt.Fprintf(writer, "This is a test %v", 90)

The Fscanf metoda skenuje ze čtečky a formátuje podle zadaného formátu.

var take string 

// read data from the given string
readString := strings.NewReader("This is a test")

read, err := fmt.Fscanf(reader, "%v", &take)

V tomto případě je Fscanf dekóduje řetězec ze čtečky do vzít proměnná a číst proměnná obsahuje výsledek formátu.

Slovesa pro formátování řetězců

Go poskytuje mnoho formátovacích sloves, která můžete použít spolu s funkcemi formátování řetězců.

Existují obecná slovesa pro formátování řetězců, jako je %v sloveso v příkladech funkcí formátování řetězce. K formátování libovolného datového typu můžete použít obecná slovesa pro formátování řetězce.

Můžete použít %#v sloveso pro výstup libovolné hodnoty, the %+v pro struktury, %T sloveso pro typ libovolné hodnoty a %% sloveso pro žádné hodnoty.

type any struct {  
name string
age int
isLoggedIn bool
}

var instance = any {
name: "John Doe",
age: 34,
isLoggedIn: true,
}

var result = fmt.Sprintf("This is a struct formatting example %+v", instance)
fmt.Println(result)

The výsledek proměnná obsahuje formátovaný řetězec konkretizované struktury. Pokud si to vytisknete, mělo by to vypadat nějak takto:

This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}

Existují slovesa pro formátování konkrétních nativních datových typů Go, včetně kanálů a ukazatelů.

%t booleovské hodnoty.
%d int, int8 atd.
%d, %#x, pokud je vytištěno pomocí %#v uint, uint8 atd.
%G float32, complex64 atd.
%s tětiva.
%p chan.
%P ukazatel.

Budete chtít zajistit, abyste se nedělali chyby se slovesy, protože jsou rozlišována velká a malá písmena, jako např. chan a ukazatel slovesa.

Formátování celých čísel a plovoucích bodů

Existují slovesa formátování řetězců pro formátování celých čísel různé základny . K formátování celých čísel můžete použít kterékoli z těchto sloves

%b základ 2
%C znak reprezentovaný odpovídajícím bodem v kódu Unicode.
%d základ 10.
základ 8.
základ 8 s předponou 0o.
%q znakový literál v jednoduchých uvozovkách bezpečně zakódovaný pomocí syntaxe Go.
%X základ 16, s malými písmeny pro a-f.
%X základ 16, s velkými písmeny pro A-F.
%V Formát Unicode: U+1234; stejné jako 'U+%04X'.

Například můžete formátovat celé číslo pomocí %d sloveso:

var result = fmt.Sprintf("This is an integer formatting example %d", 90) 
fmt.Println(result)

Toto jsou slovesa pro formátování čísel s plovoucí desetinnou čárkou.

%b bezdesetinný vědecký zápis s mocninou dvou, na způsob strconv. FormatFloat s formátem 'b', např. -123456p-78
%a vědecký zápis, např. -1,234456e+78
%A desetinná čárka, ale žádný exponent, např. 123,456
%F desetinná čárka, ale žádný exponent, např. 123,456
%F synonymum pro %f.
%G %e pro velké exponenty, %f jinak. Přesnost níže.
%G %E pro velké exponenty, %F jinak
%X hexadecimální zápis (s desetinnou mocninou dvou exponentů), např. -0x1,23abcp+20.
%X velký hexadecimální zápis, např. -0X1,23ABCP+20.

Zde je příklad formátování desetinné čárky bez exponentu s %F sloveso.

var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503) 
fmt.Println(result)

Vždy můžete použít obecná slovesa, pokud si nejste jisti typem.

jak opravit ghost touch na iphone

Formátování řetězců a bajtů

Řetězce a typy bajtů jsou v Go velmi podobné. Toto jsou příznaky pro formátování řetězců a bajtů.

%s neinterpretované bajty řetězce nebo řezu
%q řetězec s dvojitými uvozovkami bezpečně uniklý syntaxí Go
%X základ 16, malá písmena, dva znaky na bajt
%X základ 16, velká písmena, dva znaky na bajt

Zde je příklad formátování řetězce pomocí %s sloveso.

var score = "example" 
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)

Balíček fmt je nezbytný pro programování v Pythonu

The fmt balíček obsahuje většinu funkcí, které budete potřebovat pro formátování řetězců. Go také poskytuje a struny balíček pro manipulaci se strunou a log balíček, který umí formátovat řetězce pro protokolování.

The fmt balíček má funkce, které implementují io.Spisovatel a io.Reader rozhraní. Zjistíte, že je to užitečné pro mnoho případů použití, jako je vytváření webových aplikací a aplikací příkazového řádku.