Cách định dạng chuỗi trong Go

Cách định dạng chuỗi trong Go

Khi bạn viết mã Go, bạn sẽ thấy định dạng chuỗi rất hữu ích trong nhiều trường hợp. Bạn có thể đang phân tích cú pháp đầu vào hoặc tạo đầu ra phức tạp hơn so với ghép đơn giản. Bạn có thể đang làm việc với các loại khác với chuỗi đơn giản.





Định dạng chuỗi trong Go sử dụng quy trình và cú pháp quen thuộc của hàm printf, mà các ngôn ngữ từ Java đến Haskell cũng sử dụng.





Go cung cấp các phương pháp khác nhau để định dạng chuỗi trong fmt bưu kiện. Bạn có thể sử dụng các hàm và động từ để định dạng chuỗi tùy thuộc vào thao tác hoặc đầu vào mà bạn muốn định dạng.





Định dạng chuỗi trong Go

Các chức năng trong gói fmt tương tự như các đối tác, như hàm printf trong bash hoặc C. Go bắt nguồn từ các động từ định dạng của nó từ C.

Bạn dùng động từ định dạng chuỗi dưới dạng trình giữ chỗ cho các giá trị biến của bạn trong một chuỗi có chứa. Sau đó, bạn có thể chuyển chuỗi định dạng đó cho một hàm như Printf , cùng với các giá trị tương ứng với các trình giữ chỗ đó.



Bạn không thể sử dụng các động từ định dạng chuỗi với In Println các phương pháp. Bạn có thể sử dụng chúng với các phương pháp như Printf Sprintf .

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

Các %Trong động từ in bất kỳ giá trị nào ở định dạng mặc định của nó. Các Println phương thức không nhận dạng động từ và in bất kỳ đối số nào mà nó nhận được. Các Printf Sprintf cả hai hàm đều định dạng đối số chuỗi đầu tiên mà bạn chuyển cho chúng.





cách cài đặt windows 10 từ usb trên máy tính mới
  kết quả của việc định dạng số nguyên

Các chức năng định dạng chuỗi trong gói fmt

Định dạng chuỗi trong ngôn ngữ lập trình Go yêu cầu bạn sử dụng một hàm định dạng chuỗi và một động từ. Hàm trả về chuỗi được định dạng và các động từ là chỗ dành sẵn cho các đầu vào cho chuỗi.

Các Printf phương thức định dạng đầu vào theo trình định dạng và trả về số byte hoặc lỗi được viết.





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

Thông thường, bạn sẽ không phải lo lắng về lỗi khi sử dụng Printf phương pháp.

Các Sprintf định dạng phương thức theo định dạng được chỉ định và trả về kết quả dưới dạng một chuỗi.

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

Các Fprintf phương thức định dạng chuỗi và ghi nó vào một trình viết (các phương thức triển khai io.Writer giao diện)

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

Các Fscanf phương pháp quét từ một đầu đọc và định dạng theo định dạng được chỉ định.

var take string 

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

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

Trong trường hợp này, Fscanf giải mã chuỗi từ trình đọc thành cầm lấy biến, và đọc biến giữ kết quả của định dạng.

Các động từ định dạng chuỗi

Go cung cấp nhiều động từ định dạng mà bạn có thể sử dụng cùng với các chức năng định dạng chuỗi.

cách tìm bài hát từ video

Có những động từ định dạng chuỗi chung như %Trong động từ trong các ví dụ về chức năng định dạng chuỗi. Bạn có thể sử dụng các động từ định dạng chuỗi chung để định dạng bất kỳ kiểu dữ liệu nào.

Bạn có thể dùng %#Trong động từ để xuất ra bất kỳ giá trị nào, % + v đối với cấu trúc, % T động từ cho loại giá trị bất kỳ và %% động từ không có giá trị.

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)

Các kết quả biến giữ chuỗi được định dạng của cấu trúc khởi tạo. Nếu bạn in nó ra, nó sẽ trông giống như sau:

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

Có các động từ để định dạng các loại dữ liệu gốc của Go cụ thể, bao gồm các kênh và con trỏ.

% t boolean.
% d int, int8, v.v.
% d,% # x nếu được in bằng% # v uint, uint8, v.v.
% g float32, complex64, v.v.
%S sợi dây.
%P chan thanh.
%P con trỏ.

Bạn sẽ muốn đảm bảo rằng bạn không mắc lỗi với các động từ vì chúng phân biệt chữ hoa chữ thường, như chan con trỏ động từ.

Định dạng số nguyên và số nổi

Có các động từ định dạng chuỗi để định dạng số nguyên trong các cơ sở khác nhau . Bạn có thể sử dụng bất kỳ động từ nào trong số này để định dạng số nguyên

% b cơ sở 2
%c ký tự được biểu diễn bằng điểm mã Unicode tương ứng.
% d cơ số 10.
% O cơ sở 8.
% O cơ số 8 với tiền tố 0o.
% q một ký tự được trích dẫn đơn theo nghĩa đen đã thoát một cách an toàn với cú pháp Go.
% x cơ số 16, với các chữ cái viết thường cho a-f.
% X cơ số 16, với các chữ cái viết hoa cho A-F.
%TRONG Định dạng Unicode: U + 1234; giống như 'U +% 04X'.

Ví dụ: bạn có thể định dạng một số nguyên bằng cách sử dụng % d động từ:

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

Đây là những động từ để định dạng số dấu phẩy động.

% b ký hiệu khoa học không có số thập phân với số mũ là một lũy thừa của hai, theo cách của strconv. FormatFloat với định dạng 'b', ví dụ: -123456p-78
%và ký hiệu khoa học, ví dụ: -1.234456e + 78
%VÀ dấu thập phân nhưng không có số mũ, ví dụ: 123.456
% f dấu thập phân nhưng không có số mũ, ví dụ: 123.456
% F từ đồng nghĩa với% f.
% g % e cho số mũ lớn,% f ngược lại. Độ chính xác bên dưới.
% G % E cho số mũ lớn,% F ngược lại
% x ký hiệu thập lục phân (với lũy thừa thập phân của hai số mũ), ví dụ: -0x1.23abcp + 20.
% X ký hiệu thập lục phân viết hoa, ví dụ: -0X1.23ABCP + 20.

Dưới đây là một ví dụ về định dạng dấu thập phân không có số mũ với % f động từ.

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

Bạn luôn có thể sử dụng các động từ chung nếu bạn không chắc chắn về loại.

Định dạng chuỗi và byte

Các chuỗi và lát cắt kiểu byte khá giống nhau trong Go. Đây là các cờ để định dạng chuỗi và byte.

%S các byte không được diễn giải của chuỗi hoặc lát cắt
% q một chuỗi được trích dẫn kép được thoát một cách an toàn với cú pháp Go
% x cơ số 16, chữ thường, hai ký tự mỗi byte
% X cơ số 16, chữ hoa, hai ký tự mỗi byte

Dưới đây là một ví dụ về định dạng một chuỗi với %S động từ.

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

Gói fmt cần thiết cho lập trình Python

Các fmt gói chứa hầu hết các chức năng bạn cần để định dạng chuỗi. Go cũng cung cấp một dây gói cho thao tác chuỗi và một khúc gỗ gói có thể định dạng chuỗi để ghi nhật ký.

Các fmt gói có các chức năng triển khai io.Writer io.Reader các giao diện. Bạn sẽ thấy nó hữu ích cho nhiều trường hợp sử dụng như xây dựng ứng dụng web và dòng lệnh.