Докато пишете код на Go, ще откриете, че форматирането на низове е много полезно в много ситуации. Може да анализирате входове или да създавате по-сложен изход от обикновеното конкатениране. Може да работите с типове, различни от обикновени низове.
Форматирането на низове в Go използва познатия процес и синтаксис на функцията printf, които езиците от Java до Haskell също използват.
Go предоставя различни методи за форматиране на низове в fmt пакет. Можете да използвате функции и глаголи за форматиране на низ в зависимост от операцията или входовете, които искате да форматирате.
Форматиране на низове в Go
Функциите в пакета fmt са подобни на колегите, като функцията printf в bash или C. Go извлича форматиращите си глаголи от C.
Ти използваш глаголи за форматиране на низове като контейнери за вашите стойности на променливи в съдържащ низ. След това можете да предадете този форматиращ низ на функция като Printf , заедно със стойности, съответстващи на тези заместители.
как да запишете видео от youtube в ролка на камерата
Не можете да използвате глаголи за форматиране на низ с Печат и Println методи. Можете да ги използвате с методи като Printf и Sprintf .
fmt.Println("This is a test %v", 90)
fmt.Printf("This is a test %v", 90)
The %in глаголът отпечатва всяка стойност в нейния формат по подразбиране. The Println методът не разпознава глаголи и отпечатва всички аргументи, които получава. The Printf и Sprintf и двете функции форматират първия аргумент от низ, който им предавате.
Функции за форматиране на низове в пакета fmt
Форматиране на низове в езикът за програмиране Go изисква да използвате функция за форматиране на низ и глагол. Функцията връща форматирания низ, а глаголите са заместители за входовете към низа.
The Printf методът форматира входа според спецификатора на формата и връща броя на записаните байтове или грешки.
fmt.Printf("This is a test %v", 90)
Обикновено няма да се притеснявате за грешки, когато използвате Printf метод.
The Sprintf методът форматира според посочения формат и връща резултата като низ.
var result = fmt.Sprintf("This is a test %v", 90)
The Fprintf методът форматира низа и го записва на писател (методи, които реализират io.Писател интерфейс)
// write data to standard output
result, err = fmt.Fprintf(writer, "This is a test %v", 90)
The Fscanf метод сканира от четец и форматира според посочения формат.
var take string
// read data from the given string
readString := strings.NewReader("This is a test")
read, err := fmt.Fscanf(reader, "%v", &take)
В този случай, Fscanf декодира низа от четеца в предприеме променлива и Прочети променлива съдържа резултата от формата.
Глаголите за форматиране на низове
Go предоставя много глаголи за форматиране, които можете да използвате заедно с функциите за форматиране на низове.
Има общи глаголи за форматиране на низ като %in глагол в примери за функции за форматиране на низ. Можете да използвате общите глаголи за форматиране на низове, за да форматирате всеки тип данни.
Можете да използвате %#in глагол за извеждане на произволна стойност, the %+v за структури, %T глагол за вида на произволна стойност и %% глагол без стойности.
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 резултат променливата съдържа форматирания низ на инстанцираната структура. Ако го разпечатате, трябва да изглежда така:
This is a struct formatting example {name:John Doe age:34 isLoggedIn:true}
Има глаголи за форматиране на специфични типове данни Go native, включително канали и указатели.
%T | булеви стойности. |
%д | int, int8 и т.н. |
%d, %#x, ако се отпечата с %#v | uint, uint8 и т.н. |
%g | float32, complex64 и др. |
%с | низ. |
%p | чан. |
%P | показалец. |
Ще искате да сте сигурни, че не правите грешки с глаголите, тъй като те са чувствителни към малки и големи букви, като чан и показалец глаголи.
Форматиране на цели числа и плаващи числа
Има глаголи за форматиране на низове за форматиране на цели числа различни бази . Можете да използвате всеки от тези глаголи за форматиране на цели числа
%b | основа 2 |
%° С | символът, представен от съответната Unicode кодова точка. |
%д | основа 10. |
%O | основа 8. |
%O | основа 8 с префикс 0o. |
%q | символен литерал с единични кавички, безопасно екраниран със синтаксиса на Go. |
%х | основа 16, с малки букви за a-f. |
%Х | основа 16, с главни букви за A-F. |
%IN | Unicode формат: U+1234; същото като 'U+%04X'. |
Например, можете да форматирате цяло число, като използвате %д глагол:
var result = fmt.Sprintf("This is an integer formatting example %d", 90)
fmt.Println(result)
Това са глаголите за форматиране на числа с плаваща запетая.
как да намерите акаунти, свързани с телефонен номер
%b | бездесетична научна нотация с показател на степен две, по начина на strconv. FormatFloat с формат 'b', напр. -123456p-78 |
%и | научна нотация, напр. -1,234456e+78 |
%И | десетична запетая, но без експонента, напр. 123,456 |
%f | десетична запетая, но без експонента, напр. 123,456 |
%F | синоним на %f. |
%g | %e за големи показатели, %f в противен случай. Точност отдолу. |
%G | %E за големи показатели, %F в противен случай |
%х | шестнадесетичен запис (с десетична степен на два показателя), напр., -0x1.23abcp+20. |
%Х | шестнадесетичен запис с главни букви, напр. -0X1.23ABCP+20. |
Ето пример за форматиране на десетична запетая без експонента с %f глагол.
var result = fmt.Sprintf("This is a floating point formatting example %f", 432.9503)
fmt.Println(result)
Винаги можете да използвате общите глаголи, ако не сте сигурни за типа.
Форматиране на низове и байтове
Типовете низове и части от байтове са доста сходни в Go. Това са флаговете за форматиране на низове и байтове.
%с | неинтерпретираните байтове на низа или среза |
%q | низ в двойни кавички, безопасно екраниран със синтаксиса на Go |
%х | основа 16, малки букви, два знака на байт |
%Х | база 16, главни букви, два знака на байт |
Ето пример за форматиране на низ с %с глагол.
var score = "example"
var result = fmt.Sprintf("This is a string formatting example %s", score)
fmt.Println(result)
Пакетът fmt е от съществено значение за програмирането на Python
The fmt съдържа повечето от функционалностите, от които се нуждаете за форматиране на низове. Go също така предоставя a струни пакет за манипулиране на низове и a дневник пакет, който може да форматира низове за регистриране.
The fmt пакетът има функции, които изпълняват io.Писател и io.Reader интерфейси. Ще го намерите полезен за много случаи на употреба, като изграждане на приложения за уеб и команден ред.