Как да форматирате низове в Go

Как да форматирате низове в Go

Докато пишете код на 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 интерфейси. Ще го намерите полезен за много случаи на употреба, като изграждане на приложения за уеб и команден ред.