/ / 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 hàm trong gói fmt tương tự như các hàm đối, như hàm printf trong bash hoặc C. Go lấy 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ư Printfcù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 InPrintln các phương pháp. Bạn có thể sử dụng chúng với các phương pháp như PrintfSprintf.


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

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

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 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)


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


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ó những động từ định dạng chuỗi chung như % v độ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 % # v độ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 Go cụ thể, bao gồm các kênh và con trỏ.

Động từ Chức năng
% 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 có phân biệt chữ hoa chữ thường, như chancon 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

Động từ Chức năng
% b cơ sở 2
%c ký tự được đại diện bởi đ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 thường cho af.
% X cơ số 16, với các chữ cái viết hoa cho AF.
% U Đị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.

Động từ Chức năng
% b ký hiệu khoa học không có số thập phân với số mũ là hai, theo cách strconv. FormatFloat với định dạng ‘b’, ví dụ -123456p-78
% e ký hiệu khoa học, ví dụ -1.234456e + 78
% E 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.

Đây là một ví dụ về định dạng một 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.

Động từ Chức năng
%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

Đâ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.Writerio.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 các ứng dụng web và dòng lệnh.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *