Cara Memformat Sumber Go untuk Kode Konsisten yang Lebih Bersih Read Now

Diposting pada

Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

Memformat kode Anda adalah cara penting untuk meningkatkan keterbacaan, konsistensi, dan kegunaannya kembali. Kode yang diformat dengan benar lebih mudah dipahami, dimodifikasi, dan dipelihara.


Salah satu fitur hebat Go adalah konvensi pemformatannya yang terdefinisi dengan baik. Anda dapat menggunakan paket format bawaan, dan perintah go fmt, untuk memformat kode Anda secara otomatis. Ini akan membantu memastikan bahwa pemrogram Go lainnya dapat membacanya semudah mungkin.

Paket Format dan Perintah fmt

Itu format package mengimplementasikan pemformatan standar untuk kode sumber Go. Paket ini beroperasi dengan pergi format alat baris perintah untuk fleksibilitas dalam memformat kode Go.

Paket format adalah submodule dalam paket go. Inilah cara Anda dapat mengimpornya:

 import "go/format"

Anda dapat menelusuri dokumentasi perintah go fmt dengan menentukan Tolong perintah sebelum fmt memerintah:

 go help fmt 

Tentukan nama file setelah perintah fmt untuk memformat file tersebut. Ini akan menyesuaikan spasi dan lekukan kode Anda agar sesuai dengan standar Go.

 go fmt main.go

Di belakang layar, go fmt adalah alias untuk perintah gofmt, khususnya:

 gofmt -l -w 

Tanda tersebut menyebabkan gofmt untuk menulis perubahan apa pun pada setiap file yang Anda berikan dan mencantumkan nama file yang diubahnya.

Anda dapat menambahkan -x tandai ke perintah fmt. Bendera -x membantu menulis perubahan dari formatter ke file asli.

 go fmt -x main.go

Itu -n flag bekerja mirip dengan -x, tetapi tidak membuat perubahan. Sebagai gantinya, ini menampilkan perintah yang akan dijalankan oleh fmt tanpa -n:

 go fmt -n main.go

Bendera memberi tahu pemformat untuk menampilkan perubahan, yang memungkinkan Anda meninjaunya terlebih dahulu sebelum menerapkannya.

Berikut adalah program Go sederhana yang mengulang bilangan bulat dari nol hingga lima dan mencetak string “Hello World!”.

 // formatting a file named main.go as shown in the example above 

package main
import "fmt"
func main() {
  var x int=5
  for i:=0;i<x;i++{
    fmt.Println("Hello World!")
  }
}

Memformat Kode Sumber Go

Paket format berisi a Sumber fungsi untuk memformat file Go dari program. Anda harus membaca file dan meneruskan konten sebagai argumen ke fungsi Sumber.

Fungsi Sumber akan mengembalikan konten file yang diformat yang dapat Anda tulis ke file atau yang baru.

Anda dapat membaca file dengan ReadFile fungsi dari ioutil kemasan. Fungsi ReadFile mengambil nama file dan mengembalikan konten file dan kesalahan penanganan.

 fileContent, err := ioutil.ReadFile("main.go")

if err != nil {
  log.Fatalln("There was an error reading the file", err)
}

Meneruskan konten file ke fungsi Sumber mengembalikan konten file yang diformat dan kesalahan penanganan.

 formatted, err := format.Source(fileContent)

if err != nil {
  log.Fatalln("There was a formatting error with the source function", err)
}

Anda dapat menulis konten file yang diformat ke file dengan WriteFile fungsi dari ioutil kemasan. Fungsi WriteFile mengambil nama file, konten, dan mode izin file, mengembalikan kesalahan apa pun. Mode izin hanya relevan jika file tidak ada, dalam hal ini WriteFile akan membuatnya.

Itu 0644 mode izin file memberikan:

  • Pemilik file membaca dan menulis izin.
  • Baca izin untuk pengguna lain dalam grup yang sama dengan pemilik.
  • Tidak ada izin untuk pengguna lain.
 err = ioutil.WriteFile("main.go", formatted, 0644)

if err != nil {
  log.Fatalln("There was an error writing the file", err)
}

Sebagai alternatif, Anda dapat meneruskan kode sumber Go ke fungsi Sumber untuk pemformatan. Anda dapat menentukan kode dalam irisan byte menggunakan tanda centang (`):

 package main

import (
  "fmt"
  "go/format"
)

func main() {
  // simple program that calculates the area of a triangle with the math
  // function
  formatted, err := format.Source([]byte(`
package main
import(
  "fmt"
  "math"
)
func main(){
var a float64=3
var b float64=4
var c float64=5
var s float64=(a+b+c)/2
var area float64=math.Sqrt(s*(s-a)*(s-b)*(s-c))
fmt.Println("The area of the triangle is: ",area)
}
`))

  if err != nil {
    log.Fatalln("There was a formatting error with the source function", err)
  } else {
    fmt.Println(string(formatted))
  }
}

Saat memformat, Anda harus mengonversi potongan byte menjadi string dengan rangkaian fungsi. Berikut kode sumber yang diformat.

hasil operasi format

Menyesuaikan Proses Pemformatan

Anda dapat menyesuaikan proses pemformatan dengan paket format Konfigurasi struct. Struktur Config berisi kolom tempat Anda dapat menentukan opsi format pada pembuatan instance.

 import "go/format"

config := &format.Config{
  // Tabwidth sets the number of spaces per tab.
  Tabwidth: 8,

  // UseTabs indicates whether the formatter should use tabs instead of
  // spaces.
  UseTabs: false,

  // TabIndent is used to determine if the initial indentation should be
  // done using tabs or spaces.
  TabIndent: true,

  // NoFinalTab specifies whether a final tab should be removed from
  // lines before they are formatted.
  NoFinalTab: true,

  // Spaces specifies whether spaces should be used for alignment.
  Spaces: true,

  // NoTrimTrailingSpace specifies whether trailing white space should
  // be trimmed from lines before they are formatted.
  NoTrimTrailingSpace: false,
}

Anda dapat menggunakan bidang untuk menyesuaikan perilaku formatter Anda dengan menyetel opsi berdasarkan kebutuhan Anda.

Anda kemudian dapat menggunakan metode Sumber struct ini untuk memformat irisan byte berdasarkan konfigurasi Anda.

 func main() {
  fileContent, err := ioutil.ReadFile("main.go")

  // note that this is a Source method of the `config` type, not from the
  // `format` package itself although the functionality is the same, you'll
  // need to adhere to this if you need to configure the formatter
  formatted, err := config.Source(fileContent)

  if err != nil {
    log.Fatalln("There was a formatting error with the config type", err)
  }

  ioutil.WriteFile("main.go", formatted, 0644)
}

Memanggil fungsi config.Source() seperti ini memformat isi dari main.go file menggunakan opsi konfigurasi. Ini mengembalikan konten yang diformat sebagai irisan byte dan kesalahan.

Anda Dapat Memformat dan Memanipulasi String di Go

Paket format dan perintah go fmt dapat membantu Anda mengotomatiskan proses pemformatan kode.

Go juga menyediakan paket fmt untuk pemformatan string dan paket string untuk manipulasi string.

Paket fmt mengimplementasikan I/O yang diformat lebih sederhana dengan fungsi yang serupa dengan fungsi printf dan scanf C. Fungsi string mengimplementasikan fungsi sederhana untuk memanipulasi string yang disandikan UTF-8.


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

close