summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2021-10-10 20:40:34 +0700
committerShulhan <m.shulhan@gmail.com>2021-10-10 20:40:34 +0700
commitc4052c2b6a6b7b98a7df9025fb67d2ea04973b0c (patch)
tree4188d523a62f748c11e243e7ffa6c8d0d5c9db71
parentfca4a9a741f51898c702fd512bda2dab876fd829 (diff)
downloadgolang-id-web-c4052c2b6a6b7b98a7df9025fb67d2ea04973b0c.tar.xz
semua: buat semua tautan eksternal dibuka di tab baru
Selain itu, ganti golang.org/pkg dan godoc.org dengan pkg.go.dev.
-rw-r--r--_content/berkontribusi.adoc35
-rw-r--r--_content/blog/10years/index.adoc34
-rw-r--r--_content/blog/a-new-go-api-for-protocol-buffers/index.adoc48
-rw-r--r--_content/blog/cgo/index.adoc8
-rw-r--r--_content/blog/defer-panic-and-recover/index.adoc4
-rw-r--r--_content/blog/error-handling-and-go/index.adoc26
-rw-r--r--_content/blog/errors-are-values/index.adoc26
-rw-r--r--_content/blog/go-concurrency-patterns-timing-out-and/index.adoc6
-rw-r--r--_content/blog/go-image-package/index.adoc40
-rw-r--r--_content/blog/go-imagedraw-package/index.adoc13
-rw-r--r--_content/blog/go.dev/index.adoc12
-rw-r--r--_content/blog/go1.13-errors/index.adoc17
-rw-r--r--_content/blog/go1.14/index.adoc20
-rw-r--r--_content/blog/go1.15-proposals/index.adoc21
-rw-r--r--_content/blog/go1.15/index.adoc20
-rw-r--r--_content/blog/go2-here-we-come/index.adoc53
-rw-r--r--_content/blog/gobs-of-data/index.adoc104
-rw-r--r--_content/blog/introducing-go-playground/index.adoc8
-rw-r--r--_content/blog/introducing-gofix/index.adoc17
-rw-r--r--_content/blog/json-and-go/index.adoc28
-rw-r--r--_content/blog/json-rpc/index.adoc11
-rw-r--r--_content/blog/laws-of-reflection/index.adoc19
-rw-r--r--_content/blog/learn-go-from-your-browser/index.adoc6
-rw-r--r--_content/blog/migrating-to-go-modules/index.adoc27
-rw-r--r--_content/blog/module-compatibility/index.adoc49
-rw-r--r--_content/blog/module-mirror-launch/index.adoc52
-rw-r--r--_content/blog/modules2019/index.adoc13
-rw-r--r--_content/blog/normalization/index.adoc26
-rw-r--r--_content/blog/organizing-go-code/index.adoc14
-rw-r--r--_content/blog/pipelines/index.adoc19
-rw-r--r--_content/blog/pkg.go.dev-2020/index.adoc44
-rw-r--r--_content/blog/playground/index.adoc104
-rw-r--r--_content/blog/profiling-go-programs/index.adoc52
-rw-r--r--_content/blog/publishing-go-modules/index.adoc44
-rw-r--r--_content/blog/race-detector/index.adoc32
-rw-r--r--_content/blog/slices/index.adoc16
-rw-r--r--_content/blog/strings/index.adoc14
-rw-r--r--_content/blog/survey2019/index.adoc18
-rw-r--r--_content/blog/third-party-libraries-goprotobuf-and/index.adoc34
-rw-r--r--_content/blog/using-go-modules/index.adoc33
-rw-r--r--_content/blog/v2-go-modules/index.adoc13
-rw-r--r--_content/blog/versioning-proposal/index.adoc41
-rw-r--r--_content/cmd/go/index.adoc7
-rw-r--r--_content/doc/articles/go_command.adoc14
-rw-r--r--_content/doc/articles/race_detector.adoc11
-rw-r--r--_content/doc/articles/wiki/index.adoc12
-rw-r--r--_content/doc/code/index.adoc50
-rw-r--r--_content/doc/diagnostics.adoc53
-rw-r--r--_content/doc/effective_go.adoc39
-rw-r--r--_content/doc/faq/index.adoc233
-rw-r--r--_content/doc/gdb/index.adoc16
-rw-r--r--_content/doc/gopath_code/index.adoc34
-rw-r--r--_content/doc/install/gccgo/index.adoc33
-rw-r--r--_content/doc/install/source/index.adoc48
-rw-r--r--_content/doc/modules/managing-dependencies/index.adoc6
-rw-r--r--_content/doc/tutorial/add-a-test/index.adoc4
-rw-r--r--_content/doc/tutorial/create-module/index.adoc19
-rw-r--r--_content/index.adoc51
-rw-r--r--_content/modul/index.adoc26
-rw-r--r--_content/ref/mem/index.adoc4
-rw-r--r--_content/ref/spec/index.adoc16
61 files changed, 951 insertions, 946 deletions
diff --git a/_content/berkontribusi.adoc b/_content/berkontribusi.adoc
index 9493f63..6555b78 100644
--- a/_content/berkontribusi.adoc
+++ b/_content/berkontribusi.adoc
@@ -2,7 +2,6 @@
:toc:
:sectanchors:
:sectlinks:
-:golangid-isu: https://github.com/golang-id/web/issues
Halaman ini mendokumentasikan daftar pekerjaan yang dapat dilakukan untuk
situs golang-id.org. Ada tiga komponen utama yang diharapkan oleh situs ini
@@ -18,9 +17,10 @@ sebagai komunitas Go Indonesia:
3. Mengumpulkan repositori Go yang ditulis oleh komunitas Go Indonesia.
Kumpulan repositori ini seperti halaman wiki
- https://github.com/golang/go/wiki/Projects[Projects] atau
- https://github.com/avelino/awesome-go[awesome-go] namun khusus untuk
- komunitas Go Indonesia.
+ https://github.com/golang/go/wiki/Projects[Projects^]
+ atau
+ https://github.com/avelino/awesome-go[awesome-go^]
+ namun khusus untuk komunitas Go Indonesia.
== Daftar terjemahan
@@ -34,19 +34,6 @@ bagian:
** https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins => /wiki/IDEsAndTextEditorPlugins/index.adoc
-* Blog
-
-** https://blog.golang.org/errors-are-values => /blog/errors-are-values
-
-** https://blog.golang.org/profiling-go-programs =>
-/blog/profiling-go-programs/index.adoc
-
-* Referensi
-
-** https://golang.org/doc/cmd => /doc/cmd/index.adoc
-
-** https://golang.org/doc/cmd/go => /doc/cmd/go/index.adoc
-
== Cara berkontribusi
@@ -56,8 +43,9 @@ terbuka lainnya, yaitu dengan cara membuat salinan repositori lewat Github,
_commit_, dan buat _pull request_.
Untuk menghindari duplikat dan konflik, misalnya dua orang menerjemahkan
-artikel yang sama, lihat halaman {golangid-isu}[isu] terlebih
-dahulu, apabila tidak ada yang mengklaim untuk menerjemahkan artikel
+artikel yang sama, lihat halaman
+https://github.com/golang-id/web/issues[isu^]
+terlebih dahulu, apabila tidak ada yang mengklaim untuk menerjemahkan artikel
tersebut, buat isu baru dan nyatakan dalam isu tersebut artikel yang akan anda
terjemahkan.
@@ -68,7 +56,7 @@ terjemahkan.
== Struktur direktori dan berkas
Repositori ini menggunakan konvensi direktori dan berkas yang sama dengan
-https://sr.ht/~shulhan/ciigo[kerangkanya]:
+https://sr.ht/~shulhan/ciigo[kerangkanya^]:
* `cmd/www-golangid`: direktori ini adalah program utama yang berisi konten
statis.
@@ -92,7 +80,7 @@ https://sr.ht/~shulhan/ciigo[kerangkanya]:
Berikut langkah-langkah untuk memulai pengembangan di komputer anda,
Salin repositori ini ke dalam
-https://golang-id.org/doc/code.html#Workspaces[ruang-kerja]
+link:/link/doc/code.html#Workspaces[ruang-kerja^]
Go anda
----
@@ -128,8 +116,9 @@ ciigo: starting HTTP server at ":5080" for "./_content"
....
----
-Buka peramban pada alamat http://127.0.0.1:5080 (atau sesuai dengan port yang
-Anda berikan).
+Buka peramban pada alamat
+http://127.0.0.1:5080
+(atau sesuai dengan port yang Anda berikan).
Situs lokal dari golang-id.org akan muncul di halaman tersebut.
Untuk membuat halaman baru, lihat contoh yang sudah ada dalam direktori
diff --git a/_content/blog/10years/index.adoc b/_content/blog/10years/index.adoc
index 455313c..165c0a2 100644
--- a/_content/blog/10years/index.adoc
+++ b/_content/blog/10years/index.adoc
@@ -5,14 +5,14 @@
Selamat ulang tahun, Go!
Akhir pekan ini kami merayakan peringatan ke 10 dari
-https://opensource.googleblog.com/2009/11/hey-ho-lets-go.html[rilisnya Go],
+https://opensource.googleblog.com/2009/11/hey-ho-lets-go.html[rilisnya Go^],
menandakan ulang tahun ke 10 dari Go sebagai bahasa pemrograman sumber terbuka
dan ekosistem untuk membangun perangkat lunak jaringan yang modern.
Untuk menandai peristiwa ini,
-https://twitter.com/reneefrench[Reene French],
+https://twitter.com/reneefrench[Reene French^],
pencipta logo
-https://blog.golang.org/gopher[Go gopher],
+https://blog.golang.org/gopher[Go gopher^],
melukiskan kejadian menggembirakan ini:
image:https://blog.golang.org/10years/gopher10th-small.jpg[gopher 10th,500]
@@ -39,26 +39,25 @@ Saya membayangkan: di manakah Go setelah satu dekade?
Hari ini, kita dapat menjawab pertanyaan tersebut: Go ada di mana saja,
digunakan paling tidak
-https://research.swtch.com/gophercount[satu juga pengembang di seluruh dunia].
+https://research.swtch.com/gophercount[satu juga pengembang di seluruh dunia^].
Target awal Go adalah infrastruktur sistem jaringan, yang kita sebut sekarang
sebagai perangkat lunak _cloud_.
Setiap penyedia _cloud_ yang besar menggunakan infrastruktur yang ditulis
dalam Go, seperti Docker, Etcd, Istio, Kubernetes, Prometheus, dan Terraform;
mayoritas dari
-https://www.cncf.io/projects/[proyek _Cloud Native Computing Foundation_]
+https://www.cncf.io/projects/[proyek _Cloud Native Computing Foundation_^]
ditulis dalam Go.
Tidak terhitung banyaknya perusahaan menggunakan Go untuk memindahkan
pekerjaannya ke _cloud_, dari _startup_ yang dibangun dari awal sampai
perusahaan yang memodernkan perangkat lunak mereka.
Go juga telah diadopsi di luar target awalnya, digunakan untuk mengontrol
sistem tertanam dengan
-https://gobot.io/[GoBot]
+https://gobot.io/[GoBot^]
dan
-https://tinygo.org/[TinyGo]
+https://tinygo.org/[TinyGo^]
sampai mendeteksi kanker lewat
-https://medium.com/grail-eng/bigslice-a-cluster-computing-system-for-go-7e03acd2419b[pembelajaran
-mesin dan analisis data besar di GRAIL],
+https://medium.com/grail-eng/bigslice-a-cluster-computing-system-for-go-7e03acd2419b[pembelajaran mesin dan analisis data besar di GRAIL^],
dan apa pun di antaranya.
Semua ini bisa dikatakan Go telah sukses di luar mimpi kita.
@@ -79,9 +78,9 @@ Go hanya berjalan di Linux dan Mac, di 32 dan 64 bit x86, dan 32-bit ARM.
Selama satu dekade terakhir, dengan bantuan pengembang Go di seluruh dunia,
kita telah mengembangkan ide dan sketsa menjadi bahasa yang produktif dengan
peralatan yang fantastis, implementasi dengan kualitas produksi,
-https://blog.golang.org/ismmkeynote[garbage collector yang terbaru], dan
-https://golang.org/doc/install/source#introduction[penggunaan ke 12 sistem
-operasi dan 10 arsitektur].
+https://blog.golang.org/ismmkeynote[garbage collector yang terbaru^],
+dan
+https://golang.org/doc/install/source#introduction[penggunaan ke 12 sistem operasi dan 10 arsitektur^].
Setiap bahasa pemrograman membutuhkan bantuan dari ekosistem untuk tumbuh.
Rilis sumber terbuka adalah benih dari ekosistem tersebut, namun sejak itu,
@@ -93,11 +92,10 @@ Go tidak akan pernah sukses tanpa dukungan ekosistem ini.
Tentu saja, ekosistem butuh dukungan dari komunitas.
Di tahun 2019 ada berlusin konferensi Go di seluruh dunia, bersama dengan
-https://www.meetup.com/pro/go[lebih dari 150 grup meetup dengan lebih dari
-90.000 anggota].
-https://golangbridge.org/[GoBridge]
+https://www.meetup.com/pro/go[lebih dari 150 grup meetup dengan lebih dari 90.000 anggota^].
+https://golangbridge.org/[GoBridge^]
dan
-https://medium.com/@carolynvs/www-loves-gobridge-ccb26309f667[Women Who Go]
+https://medium.com/@carolynvs/www-loves-gobridge-ccb26309f667[Women Who Go^]
membantu membawa suara baru ke komunitas Go, lewat bimbingan, pelatihan, dan
beasiswa konferensi.
Di tahun ini saja, mereka telah mengajarkan ratusan orang dari kelompok
@@ -105,7 +103,7 @@ tradisional yang kurang terwakili dalam lokakarya yang mana anggota komunitas
saling mengajar dan membimbing yang baru.
Ada lebih dari
-https://research.swtch.com/gophercount[satu juta pengembang Go]
+https://research.swtch.com/gophercount[satu juta pengembang Go^]
di seluruh dunia, dan perusahaan-perusahaan mencari dan mempekerjakan lebih
banyak lagi.
Pada kenyataannya, orang-orang terkadang memberitahu kita bahwa dengan belajar
@@ -118,7 +116,7 @@ Kami mencoba membuat bahasa yang membantu kita menjadi pengembang yang lebih
baik, dan kami senang bahwa Go telah membantu banyak orang lainnya.
Saat
-https://twitter.com/search?q=%23GoTurns10[#GoTurns10],
+https://twitter.com/search?q=%23GoTurns10[#GoTurns10^],
saya berharap setiap orang mengambil kesempatan untuk merayakan komunitas Go
dan semua yang telah kita capai.
Sebagai wakil dari tim Go di Google, terima kasih kepada semua orang yang
diff --git a/_content/blog/a-new-go-api-for-protocol-buffers/index.adoc b/_content/blog/a-new-go-api-for-protocol-buffers/index.adoc
index c82720e..bab0ca5 100644
--- a/_content/blog/a-new-go-api-for-protocol-buffers/index.adoc
+++ b/_content/blog/a-new-go-api-for-protocol-buffers/index.adoc
@@ -5,15 +5,14 @@
== Pendahuluan
Dengan suka cita kami merilis revisi mayor dari Go API untuk
-https://developers.google.com/protocol-buffers[protocol buffers], format
-pertukaran data yang mendukung banyak bahasa pemrograman dari Google.
+https://developers.google.com/protocol-buffers[protocol buffers^],
+format pertukaran data yang mendukung banyak bahasa pemrograman dari Google.
== Motivasi bagi API yang baru
_Protocol buffers_ yang pertama untuk Go
-https://blog.golang.org/third-party-libraries-goprotobuf-and[diumumkan oleh
-Rob Pike]
+https://blog.golang.org/third-party-libraries-goprotobuf-and[diumumkan oleh Rob Pike^]
pada bulan Maret 2010.
Go 1 belum dirilis sampai dua tahun kemudian.
@@ -24,7 +23,7 @@ Kebutuhan pengguna pun semakin besar juga.
Banyak orang ingin menulis program yang menggunakan refleksi untuk memeriksa
_message_ dalam _protocol buffer_.
Paket
-https://pkg.go.dev/reflect[reflect]
+https://pkg.go.dev/reflect[reflect^]
menyediakan tipe dan nilai untuk Go, tetapi mengindahkan informasi dari sistem
tipe _protocol buffer_.
Misalnya, kita ingin memiliki sebuah fungsi yang memeriksa isi sebuah pesan
@@ -39,7 +38,7 @@ saat di-kompilasi.
Kami juga menelaah bahwa sebuah sumber permasalahan yang sering ditemukan
yaitu interface
-https://pkg.go.dev/github.com/golang/protobuf/proto?tab=doc#Message[proto.Message],
+https://pkg.go.dev/github.com/golang/protobuf/proto?tab=doc#Message[proto.Message^],
yang mengidentifikasi nilai dari tipe _Message_ yang dibangkitkan
(_generated_), memiliki manfaat yang sedikit dalam menjelaskan perilaku dari
tipe-tipe tersebut.
@@ -67,7 +66,7 @@ Kami harap Anda menyukainya.
Refleksi adalah fitur andalan dari implementasi yang baru.
Mirip dengan bagaimana paket `reflect` menyediakan sebuah tipe dan nilai pada
Go, paket
-https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc[`google.golang.org/protobuf/reflect/protoreflect`]
+https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc[`google.golang.org/protobuf/reflect/protoreflect`^]
menyediakan sebuah nilai menurut sistem tipe _protocol buffer_.
Deskripsi lengkap dari paket `protoreflect` akan terlalu panjang bila
@@ -75,7 +74,7 @@ dijelaskan di sini, tetapi mari kita lihat bagaimana kita dapat menulis fungsi
yang membersihkan pesan _log_ seperti yang kita sebut sebelumnya.
Pertama, kita tulis berkas `.proto` mendefinisikan ekstensi dari tipe
-https://github.com/protocolbuffers/protobuf/blob/b96241b1b716781f5bc4dc25e1ebb0003dfaba6a/src/google/protobuf/descriptor.proto#L509[`google.protobuf.FieldOptions`]
+https://github.com/protocolbuffers/protobuf/blob/b96241b1b716781f5bc4dc25e1ebb0003dfaba6a/src/google/protobuf/descriptor.proto#L509[`google.protobuf.FieldOptions`^]
supaya kita dapat menambahkan anotasi pada field-field yang berisi informasi
yang sensitif atau tidak.
@@ -108,7 +107,7 @@ func Redact(pb proto.Message) {
----
Fungsi ini menerima sebuah
-https://pkg.go.dev/google.golang.org/protobuf/proto?tab=doc#Message[`proto.Message`],
+https://pkg.go.dev/google.golang.org/protobuf/proto?tab=doc#Message[`proto.Message`^],
tipe interface yang diimplementasikan oleh semua tipe message hasil
pembangkitan.
Tipe tersebut adalah alias dari yang tipe yang didefinisikan dalam paket
@@ -122,7 +121,7 @@ type ProtoMessage interface {
Untuk menghindari penuhnya _namespace_ dari `Message` hasil pembangkitan,
interface tersebut hanya berisi sebuah method yang mengembalikan
-https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Message[`protoreflect.Message`],
+https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Message[`protoreflect.Message`^],
yang menyediakan akses ke isi `message`.
Kenapa alias?
@@ -131,7 +130,7 @@ Karena `protoreflect.Message` memiliki method yang mengembalikan
(_import cycle_) antara kedua paket tersebut.
Method
-https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Message.Range[`protoreflect.Message.Range`]
+https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Message.Range[`protoreflect.Message.Range`^]
memanggil sebuah fungsi untuk setiap field dalam sebuah `Message`.
----
@@ -143,13 +142,13 @@ m.Range(func(fd protoreflect.FieldDescriptor, v protoreflect.Value) bool {
----
Fungsi `Range` dipanggil dengan sebuah
-https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#FieldDescriptor[`protoreflect.FieldDescriptor`]
+https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#FieldDescriptor[`protoreflect.FieldDescriptor`^]
yang mendeskripsikan tipe _protocol buffer_ dari field, dan sebuah
-https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Value[`protoreflect.Value`]
+https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Value[`protoreflect.Value`^]
yang berisi nilai dari field.
Method
-https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Descriptor.Options[`protoreflect.FieldDescriptor.Options`]
+https://pkg.go.dev/google.golang.org/protobuf/reflect/protoreflect?tab=doc#Descriptor.Options[`protoreflect.FieldDescriptor.Options`^]
mengembalikan field sebagai sebuah `google.protobuf.FieldOptions`.
----
@@ -176,10 +175,10 @@ bukan dalam sistem tipe Go.
Hal ini juga merupakan contoh wilayah di mana kita telah menyederhanakan API
dari paket `proto`.
-https://pkg.go.dev/github.com/golang/protobuf/proto?tab=doc#GetExtension[`proto.GetExtension`]
+https://pkg.go.dev/github.com/golang/protobuf/proto?tab=doc#GetExtension[`proto.GetExtension`^]
yang aslinya mengembalikan sebuah nilai dan sebuah error.
Fungsi
-https://pkg.go.dev/google.golang.org/protobuf/proto?tab=doc#GetExtension[`proto.GetExtension`]
+https://pkg.go.dev/google.golang.org/protobuf/proto?tab=doc#GetExtension[`proto.GetExtension`^]
yang baru mengembalikan hanya nilai, atau nilai baku dari field bila tidak
ada.
Kesalahan dekode dari ekstensi dilaporkan saat `Unmarshal`.
@@ -227,11 +226,11 @@ APIv1 dan APIv2 adalah implementasi dalam Go yang mendukung versi bahasa
`proto2` dan `proto3`.)
Modul
-https://pkg.go.dev/github.com/golang/protobuf?tab=overview[`github.com/golang/protobuf`]
+https://pkg.go.dev/github.com/golang/protobuf?tab=overview[`github.com/golang/protobuf`^]
adalah APIv1.
Modul
-https://pkg.go.dev/google.golang.org/protobuf?tab=overview[`google.golang.org/protobuf`]
+https://pkg.go.dev/google.golang.org/protobuf?tab=overview[`google.golang.org/protobuf`^]
adalah APIv2.
Kami telah mengambil mengubah path impor dengan beralih ke tempat yang tidak
bergantung pada penyedia layanan hosting.
@@ -283,26 +282,25 @@ pembaruan dependensi).
== Catatan fitur tambahan
Paket
-https://pkg.go.dev/google.golang.org/protobuf/encoding/protojson[`google.golang.org/protobuf/encoding/protojson`]
+https://pkg.go.dev/google.golang.org/protobuf/encoding/protojson[`google.golang.org/protobuf/encoding/protojson`^]
mengonversi _protocol buffer_ `Message` dari dan ke JSON menggunakan
-https://developers.google.com/protocol-buffers/docs/proto3#json[pemetaan JSON
-kanonis],
+https://developers.google.com/protocol-buffers/docs/proto3#json[pemetaan JSON kanonis^],
dan memperbaiki sejumlah isu dengan paket `jsonpb` yang lama yang sulit diubah
tanpa menyebabkan masalah bagi pengguna yang ada.
Paket
-https://pkg.go.dev/google.golang.org/protobuf/types/dynamicpb[`google.golang.org/protobuf/types/dynamicpb`]
+https://pkg.go.dev/google.golang.org/protobuf/types/dynamicpb[`google.golang.org/protobuf/types/dynamicpb`^]
menyediakan sebuah implementasi dari `proto.Message` untuk `message` yang tipe
_protocol buffer_-nya dibangkitkan saat _runtime_.
Paket
-https://pkg.go.dev/google.golang.org/protobuf/testing/protocmp[`google.golang.org/protobuf/testing/protocmp`]
+https://pkg.go.dev/google.golang.org/protobuf/testing/protocmp[`google.golang.org/protobuf/testing/protocmp`^]
menyediakan fungsi-fungsi untuk membandingkan `Message` _protocol buffer_
dengan paket
-https://pkg.go.dev/github.com/google/go-cmp/cmp[`github.com/google/go-cmp/cmp`].
+https://pkg.go.dev/github.com/google/go-cmp/cmp[`github.com/google/go-cmp/cmp`^].
Paket
-https://pkg.go.dev/google.golang.org/protobuf/compiler/protogen?tab=doc[`google.golang.org/protobuf/compiler/protogen`]
+https://pkg.go.dev/google.golang.org/protobuf/compiler/protogen?tab=doc[`google.golang.org/protobuf/compiler/protogen`^]
menyediakan dukungan untuk menulis _plugin_ untuk _compiler protocol buffer_.
diff --git a/_content/blog/cgo/index.adoc b/_content/blog/cgo/index.adoc
index 1ca88e0..4c8ccb9 100644
--- a/_content/blog/cgo/index.adoc
+++ b/_content/blog/cgo/index.adoc
@@ -143,10 +143,10 @@ selesai digunakan dengan memanggil `C.free`.
Pemanggilan ke `C.CString` mengembalikan sebuah pointer ke awal dari array
char, jadi sebelum fungsi Print selesai kita mengonversi pointer tersebut
dengan
-https://golang.org/pkg/unsafe/#Pointer[`unsafe.Pointer`]
+https://pkg.go.dev/unsafe/#Pointer[`unsafe.Pointer`^]
dan melepaskan alokasi memori dengan `C.free`.
Idiom umum dalam program cgo yaitu melakukan
-link:/blog/defer-panic-and-recover/[`defer`]
+link:/blog/defer-panic-and-recover/[`defer`^]
untuk pelepasan memori langsung setelah alokasi (terutama saat kode yang
dibuat lebih kompleks daripada sebuah pemanggilan fungsi saja), seperti pada
versi Print berikut:
@@ -163,9 +163,9 @@ func Print(s string) {
== Membangun paket-paket cgo
Untuk membangun paket-paket cgo, cukup gunakan
-link:/cmd/go/#hdr-Compile_packages_and_dependencies['go build'^]
+link:/cmd/go#hdr-Compile_packages_and_dependencies['go build'^]
atau
-link:/cmd/go/#hdr-Compile_and_install_packages_and_dependencies['go install'^]
+link:/cmd/go#hdr-Compile_and_install_packages_and_dependencies['go install'^]
seperti biasa.
Perkakas Go mengenali perintah khusus `import "C"` dan secara otomatis
menggunakan cgo untuk berkas-berkas tersebut.
diff --git a/_content/blog/defer-panic-and-recover/index.adoc b/_content/blog/defer-panic-and-recover/index.adoc
index 09d4ed4..affb5a7 100644
--- a/_content/blog/defer-panic-and-recover/index.adoc
+++ b/_content/blog/defer-panic-and-recover/index.adoc
@@ -220,7 +220,7 @@ panic PC=0x2a9cd8
----
Untuk contoh dunia-nyata dari **panic** dan **recover**, lihat
-https://golang.org/pkg/encoding/json/[paket json]
+https://pkg.go.dev/encoding/json/[paket json^]
dari pustaka standar Go.
Paket json meng-encode sebuah interface dengan sekumpulan fungsi-fungsi yang
rekursif.
@@ -228,7 +228,7 @@ Jika sebuah eror terjadi saat menapaki nilai yang akan di-encode, panic
dipanggil untuk mengembalikan _stack_ ke pemanggilan fungsi yang paling atas,
yang akan memulihkan panic dan mengembalikan nilai error yang sesuai (lihat
method 'error' dan 'marshal' dari tipe encodeState dalam
-https://golang.org/src/pkg/encoding/json/encode.go[encode.go]
+https://golang.org/src/pkg/encoding/json/encode.go[encode.go^]
Konvensi dalam pustaka Go yaitu meskipun sebuah paket menggunakan panic di
dalamnya, API di luarnya masih tetap mengembalikan nilai error.
diff --git a/_content/blog/error-handling-and-go/index.adoc b/_content/blog/error-handling-and-go/index.adoc
index 14ec743..15ac706 100644
--- a/_content/blog/error-handling-and-go/index.adoc
+++ b/_content/blog/error-handling-and-go/index.adoc
@@ -46,13 +46,13 @@ type error interface {
----
Tipe `error`, seperti halnya dengan tipe-tipe bawaan lainnya, telah
-link:/ref/spec/#Predeclared_identifiers[dideklarasikan]
+link:/ref/spec#Predeclared_identifiers[dideklarasikan^]
dalam
-link:/ref/spec/#Blocks[blok universal].
+link:/ref/spec#Blocks[blok universal^].
Implementasi `error` yang paling sering digunakan yaitu tipe `errorString`
dari paket
-https://golang.org/pkg/errors/[errors]
+https://pkg.go.dev/errors/[errors^]
yang tidak diekspor.
----
@@ -102,7 +102,7 @@ if err != nil {
----
Paket
-https://golang.org/pkg/fmt/[fmt]
+https://pkg.go.dev/fmt/[fmt^]
memformat nilai `error` dengan memanggil method string `Error()` dari nilai
`err` tersebut.
@@ -143,7 +143,7 @@ func (f NegativeSqrtError) Error() string {
----
Pemanggil kemudian dapat menggunakan
-link:/ref/spec/#Type_assertions[tipe _assertion_]
+link:/ref/spec#Type_assertions[tipe _assertion_^]
untuk memeriksa apakah
error adalah sebuah `NegativeSqrtError` dan melakukan penanganan secara
khusus, sementara itu pengguna fungsi `Sqrt()` yang menangani nilai error
@@ -151,7 +151,7 @@ dengan mengirim ke `fmt.Println` atau `log.Fatal` tidak mengalami atau melihat
perubahan perilaku apa pun.
Contoh lainnya, paket
-https://golang.org/pkg/encoding/json/[`json`]
+https://pkg.go.dev/encoding/json/[`json`^]
menspesifikasikan tipe `SyntaxError` yang
dikembalikan oleh fungsi `json.Decode` saat menemukan kesalahan sintaksis
dari penguraian sebuah _blob_ JSON.
@@ -180,10 +180,10 @@ if err := dec.Decode(&val); err != nil {
----
(Contoh kode ini merupakan versi sederhana dari
-https://github.com/camlistore/go4/blob/03efcb870d84809319ea509714dd6d19a1498483/jsonconfig/eval.go#L123-L135[kode
-sebenarnya]
+https://github.com/camlistore/go4/blob/03efcb870d84809319ea509714dd6d19a1498483/jsonconfig/eval.go#L123-L135[kode sebenarnya^]
dari proyek
-http://camlistore.org/[Camlistore].)
+https://camlistore.org/[Camlistore^]
+.)
Interface `error` hanya membutuhkan sebuah method `Error`;
implementasi kesalahan yang khusus bisa saja punya method-method tambahan.
@@ -230,7 +230,7 @@ ada beberapa teknik yang dapat kita gunakan untuk mengurangi penanganan
kesalahan yang berulang.
Anggaplah kita punya sebuah aplikasi
-https://cloud.google.com/appengine/docs/go/[App Engine]
+https://cloud.google.com/appengine/docs/go/[App Engine^]
dengan _handler_ HTTP yang menerima sebuah _record_ dari _datastore_ dan
memformatnya dengan sebuah _template_.
@@ -283,7 +283,7 @@ func viewRecord(w http.ResponseWriter, r *http.Request) error {
----
Kode tersebut lebih sederhana dari yang awalnya, namun paket
-https://golang.org/pkg/net/http/[`http`]
+https://pkg.go.dev/net/http/[`http`^]
tidak mengenal fungsi-fungsi yang mengembalikan `error`.
Untuk memperbaiki hal tersebut kita dapat mengimplementasikan interface
`http.Handler` yaitu dengan menambahkan method `ServeHTTP()` pada tipe
@@ -341,7 +341,7 @@ type appHandler func(http.ResponseWriter, *http.Request) *appError
(Biasanya adalah sebuah kesalahan mengembalikan tipe konkret dari sebuah
`error` bukan sebuah nilai interface dari `error`, dengan alasan yang telah
didiskusikan dalam
-link:/doc/faq/#nil_error[Tanya Jawab Go],
+link:/doc/faq#nil_error[Tanya Jawab Go^],
namun untuk saat ini adalah pengecualian dan tepat untuk dilakukan karena
method `ServeHTTP` satu-satunya tempat yang tahu nilai dari `error` dan cara
menggunakan isinya.)
@@ -401,7 +401,7 @@ Berikut beberapa ide:
Hal-hal tersebut adalah cara yang bagus untuk menghindari menampilkan
kesalahan yang disebabkan oleh pemrograman kepada _user_.
Lihat artikel
- link:/blog/defer_panic_recover/[Defer Panic dan Recover]
+ link:/blog/defer_panic_recover[Defer Panic dan Recover^]
untuk lebih jelas.
diff --git a/_content/blog/errors-are-values/index.adoc b/_content/blog/errors-are-values/index.adoc
index 4cf4f32..8913940 100644
--- a/_content/blog/errors-are-values/index.adoc
+++ b/_content/blog/errors-are-values/index.adoc
@@ -1,10 +1,10 @@
= Error adalah nilai
+Rob Pike
+12 Januari 2015
:original: https://blog.golang.org/errors-are-values
-:author: Rob Pike
-:date: 12 Januari 2015
-Poin diskusi paling sering di antara para pemrogram Go, khususnya yang baru
-dengan bahasa, yaitu bagaimana cara menangani error.
+Poin diskusi paling sering di antara para pemrogram Go, khususnya yang baru,
+yaitu bagaimana cara menangani error.
Pembahasan sering kali menjadi keluhan saat beberapa urutan kode
----
@@ -49,10 +49,10 @@ kita lebih baik, mengeliminasi banyak kode yang bakal muncul bila setiap error
di cek dengan perintah if.
Berikut contoh sederhana dari tipe
-https://golang.org/pkg/bufio/#Scanner[Scanner]
+https://pkg.go.dev/bufio#Scanner[Scanner^]
pada paket `bufio`.
Method
-https://golang.org/pkg/bufio/#Scanner.Scan[Scan]
+https://pkg.go.dev/bufio#Scanner.Scan[Scan^]
melakukan _input/output_ (I/O), yang tentu saja dapat menyebabkan error.
Namun method `Scan` tidak mengekspose error sama sekali.
Method tersebut mengembalikan sebuah boolean, dan method yang terpisah yang
@@ -102,7 +102,7 @@ Penanganan error tidak menutupi alur kontrol.
Di belakangnya yang terjadi, tentu saja, yaitu saat `Scan` mengalami error
I/O, ia akan mencatatnya dan mengembalikan `false`.
Method terpisah,
-https://golang.org/pkg/bufio/#Scanner.Err[Err],
+https://pkg.go.dev/bufio#Scanner.Err[Err^],
melaporkan nilai error saat klien membutuhkannya.
Meskipun tampak sepele, hal ini tidak sama dengan menulis
@@ -122,7 +122,7 @@ tentang menggunakan bahasa untuk menangani error dengan apik.
Topik tentang kode pengecekan-error yang berulang-ulang, muncul saat saya
menghadiri GoCon 2014 di Tokyo.
Seorang gopher antusias, menggunakan akun
-https://twitter.com/jxck_[@jxck_]
+https://twitter.com/jxck_[@jxck_^]
di Twitter, mengeluhkan tentang pengecekan error.
Dia memiliki kode yang secara semantik seperti ini:
@@ -234,16 +234,16 @@ Dan banyak lagi.
Pada kenyataannya, pola ini sering muncul dalam pustaka standar.
Paket
-https://golang.org/pkg/archive/zip/[archive/zip]
+https://pkg.go.dev/archive/zip[archive/zip^]
dan
-https://golang.org/pkg/net/http/[net/http]
+https://pkg.go.dev/net/http[net/http^]
menggunakannya.
Yang lebih menonjol,
-https://golang.org/pkg/bufio/[method Writer]
+https://pkg.go.dev/bufio[method Writer^]
pada paket `bufio` sebenarnya implementasi dari ide `errWriter`.
Walaupun `bufio.Writer.Write` mengembalikan error, hal ini semata-mata demi
mengikuti interface dari
-https://golang.org/pkg/io/#Writer[`io.Writer`].
+https://pkg.go.dev/io#Writer[`io.Writer`^].
Method `Write` pada `bufio.Writer` mirip dengan method `errWriter.write` kita
di atas, dengan `Flush` yang melaporkan error, sehingga contoh kita di atas
dapat ditulis seperti:
@@ -279,4 +279,4 @@ Namun ingat: Apa pun yang Anda lakukan, selalu periksa error!
Terakhir, untuk cerita lengkap tentang interaksi saya dengan `@jxck_`,
termasuk video singkat yang dia rekam, kunjungi
-http://jxck.hatenablog.com/entry/golang-error-handling-lesson-by-rob-pike[blognya].
+https://jxck.hatenablog.com/entry/golang-error-handling-lesson-by-rob-pike[blognya^].
diff --git a/_content/blog/go-concurrency-patterns-timing-out-and/index.adoc b/_content/blog/go-concurrency-patterns-timing-out-and/index.adoc
index b6514f6..cbd0012 100644
--- a/_content/blog/go-concurrency-patterns-timing-out-and/index.adoc
+++ b/_content/blog/go-concurrency-patterns-timing-out-and/index.adoc
@@ -45,7 +45,7 @@ Channel `timeout` nantinya akan dibersihkan oleh _garbage collector_.
(Dalam contoh ini kita menggunakan `time.Sleep` untuk memperlihatkan mekanisme
dari goroutine dan channel.
Dalam program sebenarnya, anda seharusnya menggunakan
-https://golang.org/pkg/time/#After[time.After],
+https://pkg.go.dev/time/#After[time.After^],
yaitu fungsi yang mengembalikan sebuah channel dan mengirim nilai ke channel
tersebut setelah durasi tertentu.)
@@ -87,11 +87,11 @@ sampai ke perintah "return <-ch", maka pengiriman dapat gagal karena tidak ada
yang siap menerima dari channel `ch`:
Permasalahan ini adalah contoh yang dikenal sebagai
-https://en.wikipedia.org/wiki/Race_condition[kondisi berpacu]
+https://en.wikipedia.org/wiki/Race_condition[kondisi berpacu^]
(_race condition_), namun cara memperbaiki cukup mudah.
Kita cukup membuat channel `ch` memiliki _buffer_ (dengan menambahkan panjang
_buffer_ sebagai argumen dari
-https://golang.org/pkg/builtin/#make[make]),
+https://pkg.go.dev/builtin/#make[make^]),
sehingga menjamin bahwa pengiriman yang pertama memiliki ruang untuk menyimpan
nilai kembaliannya.
Hal ini supaya pengiriman selalu sukses, dan nilai pertama yang
diff --git a/_content/blog/go-image-package/index.adoc b/_content/blog/go-image-package/index.adoc
index 62f816e..5e9d7ec 100644
--- a/_content/blog/go-image-package/index.adoc
+++ b/_content/blog/go-image-package/index.adoc
@@ -7,17 +7,17 @@
== Pendahuluan
Paket
-https://golang.org/pkg/image/[image]
+https://pkg.go.dev/image/[image^]
dan
-https://golang.org/pkg/image/color[image/color]
+https://pkg.go.dev/image/color[image/color^]
berisi sejumlah tipe: `color.Color` dan `color.Model` yang mendeskripsikan
warna, `image.Point` dan `image.Rectangle` yang mendeskripsikan geometri 2-D,
dan `image.Image` yang menggabungkan kedua konsep tersebut untuk
representasi sebuah kotak persegi panjang berisi warna-warna.
Sebuah
-link:/blog/go-imagedraw-package[artikel terpisah]
+link:/blog/go-imagedraw-package[artikel terpisah^]
membahas cara melakukan komposisi gambar dengan dengan paket
-https://golang.org/pkg/image/draw/[image/draw].
+https://pkg.go.dev/image/draw/[image/draw^].
Catatan: artikel ini membutuhkan pengetahuan tentang konsep warna dan gambar
dalam domain komputer.
@@ -25,7 +25,7 @@ dalam domain komputer.
== Warna dan Model Warna
-https://golang.org/pkg/image/color/#Color[Color]
+https://pkg.go.dev/image/color#Color[Color^]
adalah interface yang mendefinisikan sekumpulan method untuk tipe bentukan
supaya dapat dianggap sebagai sebuah warna: yang bisa dikonversi ke merah,
hijau, biru, dan nilai _alpha_.
@@ -54,7 +54,7 @@ adalah 65536, untuk menjamin bahwa perkalian dua nilai tersebut tidak
mengakibatkan _overflow_.
Perkalian tersebut terjadi saat menggabungkan dua warna menurut nilai _alpha_
dari warna ketiga, dengan cara aljabar klasik
-https://en.wikipedia.org/wiki/Alpha_compositing[Porter dan Duff]:
+https://en.wikipedia.org/wiki/Alpha_compositing[Porter dan Duff^]:
----
dstr, dstg, dstb, dsta := dst.RGBA()
@@ -74,7 +74,7 @@ menggunakan nilai _alpha_ yang telah dihitung sebelumnya.
Paket image/color juga mendefinisikan sejumlah tipe konkret yang
mengimplementasikan interface `Color`.
Sebagai contohnya,
-https://golang.org/pkg/image/color/#RGBA[RGBA]
+https://pkg.go.dev/image/color#RGBA[RGBA^]
adalah sebuah struct yang merepresentasikan warna klasik "8 bits per kanal".
----
@@ -88,18 +88,19 @@ perkalian-_alpha_ dengan rentang [0,255].
`RGBA` memenuhi interface `Color` dengan mengalikan nilai tersebut dengan
0x101 untuk menghasilkan warna perkalian-_alpha_ dalam rentang [0, 65535].
Hal yang sama, tipe struct
-https://golang.org/pkg/image/color/#NRGBA[NRGBA]
+https://pkg.go.dev/image/color#NRGBA[NRGBA^]
merepresentasikan 8 bits warna tanpa perkalian-_alpha_, seperti yang digunakan
oleh format PNG.
Saat memanipulasi field-field NRGBA, nilainya adalah non perkalian-_alpha_,
namun saat memanggil method RGBA(), nilai kembaliannya dikalikan dengan nilai
_alpha_.
-Sebuah https://golang.org/pkg/image/color/#Model[Model]
+Sebuah
+https://pkg.go.dev/image/color#Model[Model^]
yaitu interface yang dapat mengonversi `Color` ke `Color` lainnya, bisa jadi
secara _lossy_.
Misalnya, `GrayModel` bisa mengonversi `Color` apa pun menjadi
-https://golang.org/pkg/image/color/#Gray[Gray].
+https://pkg.go.dev/image/color#Gray[Gray^].
Sebuah `Palette` bisa mengonversi `Color` apa pun ke salah satu _palette_
terbatas.
@@ -114,7 +115,7 @@ type Palette []Color
== Point (titik) dan Rectangle (persegi panjang)
Sebuah
-https://golang.org/pkg/image/#Point[Point]
+https://pkg.go.dev/image#Point[Point^]
yaitu sebuah koordinat (x,y) pada _grid_ integer, dengan poros ke kanan dan ke
bawah.
Ia bukanlah sebuah _pixel_ dan bukan pula sebuah kotak segi empat.
@@ -134,7 +135,7 @@ p := image.Point{2, 1}
----
Sebuah
-https://golang.org/pkg/image/#Rectangle[Rectangle]
+https://pkg.go.dev/image#Rectangle[Rectangle^]
yaitu persegi panjang dalam _grid_ integer, didefinisikan `Point` pada
bagian atas-kiri dan bawah-kanan.
Sebuah `Rectangle` juga tidak memiliki warna, namun visualisasi di bawah ini
@@ -197,7 +198,7 @@ argumen `Point`, atau empat argumen `int`.
== Image (Gambar)
Sebuah
-https://golang.org/pkg/image/#Image[Image]
+https://pkg.go.dev/image#Image[Image^]
memetakan setiap kotak _grid_ dalam sebuah `Rectangle` menjadi `Color` dari
sebuah `Model`.
"_Pixel_ pada (x,y)" mengacu pada warna dari kotak _grid_ yang didefinisikan
@@ -235,7 +236,7 @@ for y := b.Min.Y; y < b.Max.Y; y++ {
Implementasi `Image` tidak harus berbasiskan slice dari data _pixel_.
Contohnya, sebuah
-https://golang.org/pkg/image/#Uniform[Uniform]
+https://pkg.go.dev/image#Uniform[Uniform^]
yaitu sebuah `Image` yang memiliki garis batas yang sangat besar dengan satu
warna, yang representasi di _memory_ hanyalah warna saja.
@@ -247,8 +248,9 @@ type Uniform struct {
Biasanya, program menginginkan sebuah gambar yang berbasis slice.
Tipe struct seperti
-https://golang.org/pkg/image/#RGBA[RGBA] dan
-https://golang.org/pkg/image/#Gray[Gray]
+https://pkg.go.dev/image#RGBA[RGBA^]
+dan
+https://pkg.go.dev/image#Gray[Gray^]
(yang dipanggil oleh paket lain sebagai `image.RGBA` dan `image.Gray`)
menyimpan slice dari data _pixel_ dan mengimplementasikan interface `Image`.
@@ -296,7 +298,7 @@ gambar.
Pada contoh di atas, pixel-pixel yang ditutupi oleh `m1.Pix` diwarnai dengan
biru.
Untuk kode tingkat-tinggi, seperti method `At()` dan `Set()` atau
-https://golang.org/pkg/image/draw/[paket image/draw],
+https://pkg.go.dev/image/draw/[paket image/draw^],
akan memotong operasi pixel sesuai dengan garis batas gambar.
@@ -306,7 +308,7 @@ Pustaka bawaan mendukung sejumlah format gambar umum, seperti GIF, JPEG, dan
PNG.
Jika anda mengetahui format dari berkas gambar, anda dapat men- _decode_
langsung dari
-https://golang.org/pkg/io/#Reader[io.Reader].
+https://pkg.go.dev/io#Reader[io.Reader^].
----
import (
@@ -326,7 +328,7 @@ func convertJPEGToPNG(w io.Writer, r io.Reader) error {
----
Jika anda memiliki gambar dengan format tidak diketahui, fungsi
-https://golang.org/pkg/image/#Decode[image.Decode]
+https://pkg.go.dev/image#Decode[image.Decode^]
dapat digunakan untuk mendeteksi formatnya.
Kumpulan format yang dikenali dibentuk pada saat _runtime_ dan tidak terbatas
hanya pada yang ada di pustaka bawaan.
diff --git a/_content/blog/go-imagedraw-package/index.adoc b/_content/blog/go-imagedraw-package/index.adoc
index 3ba4f4c..c886ab2 100644
--- a/_content/blog/go-imagedraw-package/index.adoc
+++ b/_content/blog/go-imagedraw-package/index.adoc
@@ -8,7 +8,7 @@ gambar dalam domain komputer.
=== Pendahuluan
-https://golang.org/pkg/image/draw/[Paket image/draw]
+https://pkg.go.dev/image/draw/[Paket image/draw^]
mendefinisikan hanya satu operasi: menulis gambar sumber ke gambar tujuan,
lewat sebuah gambar _mask_ yang opsional.
Operasi ini banyak gunanya dan dapat melakukan sejumlah pekerjaan manipulasi
@@ -25,8 +25,7 @@ Dalam Go, gambar _mask_ yang bernilai `nil` sama dengan gambar _mask_ yang
ukurannya tak terbatas dan sepenuhnya transparan.
Makalah Porter-Duff menjabarkan
-http://www.w3.org/TR/SVGCompositing/examples/compop-porterduff-examples.png[12
-operator komposisi],
+https://www.w3.org/TR/SVGCompositing/examples/compop-porterduff-examples.png[12 operator komposisi^],
namun dengan _mask_ yang eksplisit, hanya 2 darinya yang dibutuhkan:
sumber-terhadap-tujuan dan sumber.
Dalam Go, operator-operator tersebut direpresentasikan oleh konstan `Over` dan
@@ -68,10 +67,10 @@ koordinat masing-masing.
image:/assets/go-imagedraw-package_20.png[]
Fungsi
-https://golang.org/pkg/image/draw/#DrawMask[DrawMask()]
+https://pkg.go.dev/image/draw#DrawMask[DrawMask()^]
menerima tujuh argumen, namun argumen mask dan mask-point biasanya tidak
diperlukan, sehingga fungsi
-https://golang.org/pkg/image/draw/#Draw[Draw()]
+https://pkg.go.dev/image/draw#Draw[Draw()^]
menerima hanya lima:
----
@@ -83,7 +82,7 @@ func DrawMask(dst Image, r image.Rectangle, src image.Image, sp image.Point,
Gambar tujuan haruslah _mutable_ (bisa diubah), sehingga paket image/draw
mendefinisikan sebuah interface
-https://golang.org/pkg/image/draw/#Image[draw.Image]
+https://pkg.go.dev/image/draw#Image[draw.Image^]
yang memiliki sebuah method `Set()`.
----
@@ -261,4 +260,4 @@ untuk mendukung aplikasi-aplikasi tertentu.
== Artikel Terkait
-* link:/blog/go-image-package[Paket image pada Go]
+* link:/blog/go-image-package[Paket image pada Go^]
diff --git a/_content/blog/go.dev/index.adoc b/_content/blog/go.dev/index.adoc
index 46c0cef..69f976c 100644
--- a/_content/blog/go.dev/index.adoc
+++ b/_content/blog/go.dev/index.adoc
@@ -8,7 +8,7 @@ sama: siapa saja yang menggunakan Go, apa yang mereka buat dengan Go, dan
bagaimana cara saya menemukan paket Go yang berguna?
Hari ini kita meluncurkan
-https://go.dev[go.dev],
+https://go.dev[go.dev^],
sebuah pusat kegiatan baru untuk pengembang Go, untuk membantu menjawab
pertanyaan-pertanyaan tersebut.
Di sana Anda akan menemukan banyak sumber pembelajaran bahasa Go,
@@ -17,24 +17,24 @@ contoh-contoh kasus, dan studi kasus dari perusahaan yang menggunakan Go.
image:https://blog.golang.org/go.dev/home.png[,600]
(Ingat bahwa
-https://golang.org[golang.org]
+https://golang.org[golang.org^]
masih merupakan rumah bagi proyek sumber terbuka dan distribusi dari Go.
Go.dev adalah situs pembantu yang menyediakan sumber-sumber pendukung
tersebut.)
Dengan membuka "Explore" Anda akan dibawa ke
-https://pkg.go.dev[pkg.go.dev],
+https://pkg.go.dev[pkg.go.dev^],
sebuah pusat sumber informasi tentang paket-paket dan modul-modul Go.
Seperti
-https://godoc.org[godoc.org],
+https://godoc.org[godoc.org^],
pkg.go.dev melayani dokumentasi Go.
Namun, situs ini juga mengenal modul dan memiliki informasi tentang semua
versi dari sebuah paket, termasuk
-https://pkg.go.dev/std?tab=versions[semua rilis dari pustaka standard]!
+https://pkg.go.dev/std?tab=versions[semua rilis dari pustaka standard^]!
Dan ia juga dapat mendeteksi dan menampilkan lisensi dan memiliki algoritme
pencarian yang lebih baik.
Anda dapat mengikuti
-https://golang.org/issue/33654[Go isu 33654]
+https://golang.org/issue/33654[Go isu 33654^]
untuk pengembangan selanjutnya.
image:https://blog.golang.org/go.dev/http.png[,600]
diff --git a/_content/blog/go1.13-errors/index.adoc b/_content/blog/go1.13-errors/index.adoc
index 127d691..a10b2af 100644
--- a/_content/blog/go1.13-errors/index.adoc
+++ b/_content/blog/go1.13-errors/index.adoc
@@ -8,7 +8,7 @@
== Pendahuluan
Perlakuan Go terhadap
-link:/blog/errors-are-values[error sebagai nilai]
+link:/blog/errors-are-values[error sebagai nilai^]
telah melayani kita dengan baik selama dekade terakhir ini.
Walaupun dukungan pustaka standar untuk error masih minimal--hanya fungsi
`errors.New` dan `fmt.Errorf`, yang menghasilkan error yang berisi hanya sebuah
@@ -33,7 +33,7 @@ menyediakan konteks tambahan.
Pola-pola dari sebuah error yang berisi informasi tambahan begitu banyak
digunakan dalam kode Go, setelah
-https://golang.org/issue/29934[diskusi yang mendalam],
+https://golang.org/issue/29934[diskusi yang mendalam^],
Go 1.13 menambahkan dukungan eksplisit untuk hal tersebut.
Artikel ini menjelaskan penambahan-penambahan ke pustaka bawaan tersebut: tiga
fungsi baru dalam paket `errors`, dan sebuah format baru pada `fmt.Errorf`.
@@ -72,10 +72,10 @@ if err == ErrNotFound {
Sebuah nilai error bisa saja bertipe apa pun selama memenuhi interface
`error`.
Sebuah program dapat menggunakan
-link:/doc/effective_go.html#interface_conversions[konversi tipe]
+link:/doc/effective_go.html#interface_conversions[konversi tipe^]
atau
-link:/doc/effective_go.html#type_switch[switch bertipe] untuk
-mengubah atau mendapatkan nilai error menjadi tipe yang diinginkan.
+link:/doc/effective_go.html#type_switch[switch bertipe^]
+untuk mengubah atau mendapatkan nilai error menjadi tipe yang diinginkan.
----
type NotFoundError struct {
@@ -130,7 +130,7 @@ if e, ok := err.(*QueryError); ok && e.Err == ErrPermission {
----
Tipe
-https://pkg.go.dev/os?tab=doc#PathError[`os.PathError`]
+https://pkg.go.dev/os?tab=doc#PathError[`os.PathError`^]
dalam pustaka standar adalah contoh lain dari sebuah error yang berisi error
lainnya.
@@ -317,8 +317,7 @@ Sebagai tambahan, sebuah error dalam rangkaian error bisa mendeklarasikan
bahwa ia cocok dengan sebuah target dengan mengimplementasikan method `Is`.
Sebagai contoh, pertimbangkan error berikut yang terinspirasi oleh
-https://commandcenter.blogspot.com/2017/12/error-handling-in-upspin.html[paket
-error pada Upspin]
+https://commandcenter.blogspot.com/2017/12/error-handling-in-upspin.html[paket error pada Upspin^]
yang membandingkan sebuah error dengan sebuah templat, dengan mempertimbangkan
hanya field-field yang tidak nol di dalam templat:
@@ -438,7 +437,7 @@ hal yang umum, membantu program membuat keputusan yang lebih baik dan
membantu pemrogram menemukan _bug_ lebih cepat.
Seperti yang Russ Cox katakan dalam
-https://blog.golang.org/experiment[GopherCon 2019],
+https://blog.golang.org/experiment[GopherCon 2019^],
untuk mencapai Go 2 kita bereksperimen, menyederhanakan dan merilis (yang
baru).
Sekarang karena kita telah merilis perubahan ini, kita menantikan
diff --git a/_content/blog/go1.14/index.adoc b/_content/blog/go1.14/index.adoc
index 5ef75fd..e6eef5b 100644
--- a/_content/blog/go1.14/index.adoc
+++ b/_content/blog/go1.14/index.adoc
@@ -4,30 +4,28 @@
Hari ini tim Go sangat senang mengumumkan rilis dari Go 1.14.
Anda bisa mendapatkannya lewat
-https://golang.org/dl[halaman unduhan].
+https://golang.org/dl[halaman unduhan^].
Beberapa sorotan dari rilis ini yaitu:
* Dukungan modul dalam perintah `go` sekarang telah stabil.
Kami mendorong semua pengguna untuk
- https://golang.org/doc/go1.14#introduction[migrasi ke go modul sebagai
- manajemen dependensi].
-* https://golang.org/doc/go1.14#language[Penanaman interface dengan kumpulan
- method yang sama]
-* https://golang.org/doc/go1.14#runtime[Peningkatan kinerja `defer`]
-* https://golang.org/doc/go1.14#runtime[Goroutine sekarang _asynchronously preemptible_]
-* https://golang.org/doc/go1.14#runtime[Alokasi _page_ yang lebih efisien]
-* https://golang.org/doc/go1.14#runtime[_Timer_ internal yang lebih efisien]
+ https://golang.org/doc/go1.14#introduction[migrasi ke go modul sebagai manajemen dependensi^].
+* https://golang.org/doc/go1.14#language[Penanaman interface dengan kumpulan method yang sama^]
+* https://golang.org/doc/go1.14#runtime[Peningkatan kinerja `defer`^]
+* https://golang.org/doc/go1.14#runtime[Goroutine sekarang _asynchronously preemptible_^]
+* https://golang.org/doc/go1.14#runtime[Alokasi _page_ yang lebih efisien^]
+* https://golang.org/doc/go1.14#runtime[_Timer_ internal yang lebih efisien^]
Untuk daftar lengkap dari perubahan dan informasi lain tentang peningkatan di
atas dapat dilihat di
-https://golang.org/doc/go1.14[catatan rilis Go 1.14].
+https://golang.org/doc/go1.14[catatan rilis Go 1.14^].
Kami berterima kasih kepada semua orang yang telah berkontribusi terhadap
rilis ini baik dengan menulis kode, melaporkan _bug_, menyediakan balasan,
dan/atau menguji beta dan rilis kandidat.
Kontribusi dan ketekunan Anda membantu menjamin Go 1.14 supaya tetap stabil.
Jika Anda memiliki masalah, silakan
-https://golang.org/issue/new[melaporkan isu].
+https://golang.org/issue/new[melaporkan isu^].
Kami berharap Anda senang dengan rilis baru ini!
diff --git a/_content/blog/go1.15-proposals/index.adoc b/_content/blog/go1.15-proposals/index.adoc
index 32eb79d..8f864a0 100644
--- a/_content/blog/go1.15-proposals/index.adoc
+++ b/_content/blog/go1.15-proposals/index.adoc
@@ -7,7 +7,7 @@
Saat ini kita mendekati rilis Go 1.14, yang direncanakan bulan Februari
bila semua berjalan dengan lancar, rilis kandidat yang pertama hampir siap.
Berdasarkan proses yang dijelaskan dalam blog
-link:/blog/go2-here-we-come[Go 2, kami datang!],
+link:/blog/go2-here-we-come[Go 2, kami datang!^],
inilah saat dalam siklus pengembangan dan rilis untuk menimbang
perubahan-perubahan apa saja yang ingin ditambahkan pada pustaka atau
bahasa untuk rilis selanjutnya, Go 1.15, yang dijadwalkan pada bulan Agustus
@@ -20,7 +20,7 @@ hari, dan kita juga punya progres dengan implementasi generik (lebih lanjut
lagi nanti tahun ini).
Usaha kita selama tujuh bulan lalu dalam menyediakan mekanisme penanganan
error yang lebih baik,
-https://golang.org/issue/32437[proposal `try`],
+https://golang.org/issue/32437[proposal `try`^],
menemui dukungan yang baik namun juga penolakan yang kuat dan kami memutuskan
untuk meninggalkannya.
Setelah kejadian itu ada banyak proposal yang memperbaikinya, namun tidak ada
@@ -47,7 +47,7 @@ Kami konsentrasi pada beberapa pemeriksaan `vet` yang baru dan sedikit
perbaikan pada bahasa Go.
Kami telah memilih tiga proposal berikut:
-https://golang.org/issue/32479[#32479].
+https://golang.org/issue/32479[#32479^].
Diagnosis konversi `string(int)` dalam `go vet`.
Kami berencana menyelesaikan hal ini untuk rilis Go 1.14 namun ternyata tidak
@@ -57,11 +57,11 @@ membingungkan bagi pendatang baru (`string(10)` adalah "\n" bukan "10") dan
tidak dibolehkan lagi sekarang sejak konversi tersebut telah tersedia dalam
paket `unicode/utf8`.
Secara
-https://golang.org/issue/3939[dihapusnya konversi ini]
+https://golang.org/issue/3939[dihapusnya konversi ini^]
bukanlah perubahan yang menjaga kompatibilitas, kami mengajukan untuk
memulainya sebagai sebuah error dalam `vet`.
-https://golang.org/issue/4483[#4483].
+https://golang.org/issue/4483[#4483^].
Diagnosis asersi tipe interface-ke-interface yang tidak memungkinkan dalam
`go vet`.
@@ -77,7 +77,7 @@ sebagai error.
Melaporkan error dari sisi _compiler_ pada kasus ini tidak menjaga
kompatibilitas, maka dari itu kami memulai dengan sebuah error dalam `vet`.
-https://golang.org/issue/28591[#28951].
+https://golang.org/issue/28591[#28951^].
Evaluasi konstanta indeks dan ekspresi slice dengan indeks dan string
konstanta.
@@ -97,7 +97,7 @@ Oleh karena itu kami berencana mengimplementasikan semua proposal tersebut
pada awal siklus rilis Go 1.15 (setelah rilis Go 1.14) supaya banyak waktu
untuk mendapatkan pengalaman dan umpan balik dari yang lain.
Menurut
-link:/blog/go2-here-we-come[proses evaluasi proposal],
+link:/blog/go2-here-we-come[proses evaluasi proposal^],
keputusan terakhir akan diambil pada akhir siklus pengembangan, awal Mei,
2020.
@@ -105,7 +105,8 @@ keputusan terakhir akan diambil pada akhir siklus pengembangan, awal Mei,
== Satu hal lagi...
Kami menerima banyak proposal perubahan bahasa
-(https://github.com/golang/go/labels/LanguageChange[isu-isu berlabel LanguageChange])
+(
+https://github.com/golang/go/labels/LanguageChange[isu-isu berlabel LanguageChange^])
yang dapat kita tinjau secara mendalam.
Misalnya, untuk penanganan error saja ada 57 isu, 5 darinya masih terbuka.
Secara biaya membuat perubahan pada bahasa, walau sedikit, sangat tinggi dan
@@ -116,12 +117,12 @@ Hal ini tidak memuaskan bagi pihak yang terkait.
Jika Anda telah menghabiskan banyak waktu dan usaha menjelaskan ide Anda
dengan rinci, akan lebih baik bila ia tidak begitu saja ditolak.
Di sisi lain, karena
-https://github.com/golang/proposal/blob/master/README.md[proses proposal]
+https://github.com/golang/proposal/blob/master/README.md[proses proposal^]
secara umum sangat simpel, maka sangat mudah untuk membuat proposal perubahan
bahasa yang setengah matang, yang menyebabkan banyak pekerjaan di sisi komite
_review_.
Untuk meningkatkan pengalaman ini bagi semua orang kami menambahkan sebuah
-https://github.com/golang/proposal/blob/master/go2-language-changes.md[kuesioner]
+https://github.com/golang/proposal/blob/master/go2-language-changes.md[kuesioner^]
baru untuk perubahan bahasa: mengisi templat tersebut akan membantu para
peninjau mengevaluasi proposal lebih efisien karena mereka tidak perlu mencoba
menjawab pertanyaan-pertanyaan tersebut bagi diri mereka sendiri.
diff --git a/_content/blog/go1.15/index.adoc b/_content/blog/go1.15/index.adoc
index b0f11fb..33c1801 100644
--- a/_content/blog/go1.15/index.adoc
+++ b/_content/blog/go1.15/index.adoc
@@ -3,28 +3,26 @@
:date: 11 Agustus 2020
Tim Go dengan suka cita mengumumkan rilis Go 1.15.
-Anda bisa mengunduhnya lewat https://golang.org/dl[halaman ini].
+Anda bisa mengunduhnya lewat https://golang.org/dl[halaman ini^].
Beberapa hal penting dalam rilis ini termasuk:
-* https://golang.org/doc/go1.15#linker[Peningkatan substansial dari Go linker]
-* https://golang.org/doc/go1.15#runtime[Peningkatan alokasi objek-objek kecil]
-* https://golang.org/doc/go1.15#commonname[Deprekasi X509 CommonName]
-* https://golang.org/doc/go1.15#go-command[GOPROXY sekarang mengindahkan proxy
- yang eror]
-* https://golang.org/doc/go1.15#time/tzdata[Paket tzdata yang baru]
-* https://golang.org/doc/go1.15#library[Sejumlah peningkatan pada pustaka
- inti]
+* https://golang.org/doc/go1.15#linker[Peningkatan substansial dari Go linker^]
+* https://golang.org/doc/go1.15#runtime[Peningkatan alokasi objek-objek kecil^]
+* https://golang.org/doc/go1.15#commonname[Deprekasi X509 CommonName^]
+* https://golang.org/doc/go1.15#go-command[GOPROXY sekarang mengindahkan proxy yang eror^]
+* https://golang.org/doc/go1.15#time/tzdata[Paket tzdata yang baru^]
+* https://golang.org/doc/go1.15#library[Sejumlah peningkatan pada pustaka inti^]
Untuk daftar perubahan selengkapnya dan informasi lebih lanjut tentang
peningkatan di atas, lihat di
-https://golang.org/doc/go1.15[catatan rilis Go 1.15].
+https://golang.org/doc/go1.15[catatan rilis Go 1.15^].
Kita ingin berterima kasih banyak kepada orang-orang yang telah berkontribusi
pada rilis ini baik dengan menulis kode, melaporkan kesalahan, menyediakan
umpan balik, dan/atau menguji rilis kandidat.
Kontribusi dan usaha Anda memastikan Go 1.15 menjadi stabil.
Akhir kata, jika Anda menemukan ada masalah, mohon
-https://golang.org/issue/new[laporkan].
+https://golang.org/issue/new[laporkan^].
Kami berharap Anda menikmati rilis ini!
diff --git a/_content/blog/go2-here-we-come/index.adoc b/_content/blog/go2-here-we-come/index.adoc
index 6bca33e..fc016d9 100644
--- a/_content/blog/go2-here-we-come/index.adoc
+++ b/_content/blog/go2-here-we-come/index.adoc
@@ -6,8 +6,9 @@
Di GopherCon 2017, Russ Cox secara resmi mulai membayangkan versi besar
selanjutnya dari Go dengan wicara tentang
-https://www.youtube.com/watch?v=0Zbh_vmAKvk[Masa depan Go]
-(https://blog.golang.org/toward-go2[blog]).
+https://www.youtube.com/watch?v=0Zbh_vmAKvk[Masa depan Go^]
+(
+https://blog.golang.org/toward-go2[blog^]).
Kita menyebut masa depan bahasa secara informal dengan Go 2, walaupun sekarang
kita paham bahwa ia akan datang secara inkremental bukan dengan tiba-tiba
dalam sebuah rilis mayor.
@@ -24,7 +25,7 @@ pustaka-pustaka yang tidak kita ketahui sejak awal, dan hal ini bisa terjadi
lewat umpan balik dari komunitas Go.
Pada tahun 2015 kami memperkenalkan
-https://golang.org/s/proposal[proses proposal]
+https://golang.org/s/proposal[proses proposal^]
untuk mengumpulkan umpan balik: proposal untuk perubahan bahasa dan pustaka.
Sebuah komite yang terdiri dari anggota tim Go secara berkala telah mengulas,
kategorisasi, dan menentukan proposal-proposal yang masuk.
@@ -42,15 +43,15 @@ perlu sebuah rencana.
== Status
Saat artikel ini ditulis, ada sebanyak 120
-https://github.com/golang/go/issues?page=1&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2&utf8=%E2%9C%93[isu
-terbuka berlabel Go 2 proposal].
+https://github.com/golang/go/issues?page=1&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2&utf8=%E2%9C%93[isu terbuka berlabel Go 2 proposal^].
Setiap proposal mengajukan perubahan bahasa atau pustaka yang signifikan,
sering kali ada yang tidak memenuhi
-https://golang.org/doc/go1compat[jaminan kompatibilitas Go 1].
+https://golang.org/doc/go1compat[jaminan kompatibilitas Go 1^].
Ian Lance Taylor dan Saya telah melihat proposal-proposal tersebut dan
mengategorikan mereka
-(https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2+label%3AGo2Cleanup[Go2Cleanup],
-https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2+label%3ANeedsDecision[NeedsDecision],
+(
+https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2+label%3AGo2Cleanup[Go2Cleanup^],
+https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3Aproposal+label%3AGo2+label%3ANeedsDecision[NeedsDecision^],
dan lain-lain)
untuk mendapatkan ide tentang apa saja yang ada di sana dan mempermudah
bekerja dengan mereka nantinya.
@@ -61,13 +62,13 @@ Ide-ide dari proposal yang tersisa bisa jadi memengaruhi bahasa dan pustaka
dari Go 2.
Dua tema utama muncul: dukungan untuk penanganan error yang lebih baik, dan
generik.
-https://blog.golang.org/go2draft[Rancangan draf]
+https://blog.golang.org/go2draft[Rancangan draf^]
untuk kedua area ini telah diterbitkan pada GopherCon tahun ini, dan lebih
banyak eksplorasi dibutuhkan.
Lalu bagaimana dengan sisanya?
Kami
-https://blog.golang.org/toward-go2[dibatasi]
+https://blog.golang.org/toward-go2[dibatasi^]
oleh fakta bahwa kita sekarang punya jutaan pemrogram Go dan sejumlah besar
kode Go, dan kita harus membawa semuanya secara bersamaan, mengurangi risiko
terpecahnya ekosistem.
@@ -85,8 +86,7 @@ Proses tersebut kurang lebih berjalan secara paralel dengan siklus rilis dan
terdiri dari langkah-langkah berikut:
1. _Pemilihan proposal_. Tim Go memilih sejumlah kecil
-https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3AGo2+label%3AProposal[Go
-2 proposal]
+https://github.com/golang/go/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+label%3AGo2+label%3AProposal[Go 2 proposal^]
yang layak diterima, tanpa membuat keputusan akhir.
Lihat bagian bawah untuk kriteria pemilihan.
@@ -108,10 +108,10 @@ Lihat bagian bawah untuk kriteria pemilihan.
mengumpulkan umpan balik selanjutnya.
5. _Mengambil keputusan_. Di akhir
-https://github.com/golang/go/wiki/Go-Release-Cycle[siklus pengembangan] tiga
-bulan (saat repositori dibekukan sebelum rilis), dan berdasarkan pengalaman
-dan umpan balik yang diterima selama siklus rilis, tim Go membuat keputusan
-terakhir tentang menerbitkan setiap perubahan.
+https://github.com/golang/go/wiki/Go-Release-Cycle[siklus pengembangan^]
+tiga bulan (saat repositori dibekukan sebelum rilis),
+dan berdasarkan pengalaman dan umpan balik yang diterima selama siklus rilis,
+tim Go membuat keputusan terakhir tentang menerbitkan setiap perubahan.
Hal ini menyediakan kesempatan untuk mempertimbangkan apakah perubahan telah
mendapatkan keuntungan yang diharapkan atau menciptakan biaya yang tidak
terduga.
@@ -177,20 +177,21 @@ Dari semua yang telah kita bahas, kami mengajukan beberapa pilihan berikut
dari proposal Go 2 untuk rilis Go 1.13 (langkah 1 dalam proses evaluasi
proposal):
-1. https://github.com/golang/go/issues/20706[#20706] Identifikasi Unicode
- umum berdasarkan
- http://unicode.org/reports/tr31/[Unicode TR31]: Isu ini penting bagi
- pemrogram Go yang menggunakan alfabet selain latin dan seharusnya memiliki
- impak yang sedikit atau tidak sama sekali pada orang lain.
+1. https://github.com/golang/go/issues/20706[#20706^]
+ Identifikasi Unicode umum berdasarkan
+ https://unicode.org/reports/tr31/[Unicode TR31^]:
+ Isu ini penting bagi pemrogram Go yang menggunakan alfabet selain latin dan
+ seharusnya memiliki impak yang sedikit atau tidak sama sekali pada orang
+ lain.
Ada beberapa pertanyaan normalisasi yang perlu kita jawab yang mana umpan
balik dari komunitas diperlukan, namun setelah itu implementasi akan mudah
dilakukan.
Perlu dicatat bahwa aturan pengidentifikasi ekspor tidak akan terpengaruh
oleh hal ini.
-2. https://github.com/golang/go/issues/19308[#19308],
- https://github.com/golang/go/issues/28493[#28493] Binary integer
- dan dukungan untuk _ pada angka:
+2. https://github.com/golang/go/issues/19308[#19308^],
+ https://github.com/golang/go/issues/28493[#28493^]
+ Binary integer dan dukungan untuk _ pada angka:
Isu ini perubahan yang relatif kecil yang tampaknya sangat populer di
antara banyak pemrogram.
Isu ini mungkin tidak mencapai ambang batas dari menyelesaikan "isu
@@ -201,8 +202,8 @@ proposal):
peduli dengan integer atau format angka, dan implementasi cukup mudah
dipahami.
-3. https://github.com/golang/go/issues/19113[#19113] Membolehkan signed
- integer untuk operasi _shift_.
+3. https://github.com/golang/go/issues/19113[#19113^]
+ Membolehkan signed integer untuk operasi _shift_.
Diperkirakan 38% dari semua operasi _shift_ membutuhkan konversi uint
(lihat halaman isu untuk penjelasan lebih rinci).
Proposal ini akan membersihkan banyak kode, membuat ekspresi _shift_ sama
diff --git a/_content/blog/gobs-of-data/index.adoc b/_content/blog/gobs-of-data/index.adoc
index d6ebfa0..ba7113a 100644
--- a/_content/blog/gobs-of-data/index.adoc
+++ b/_content/blog/gobs-of-data/index.adoc
@@ -1,6 +1,6 @@
= Gob dari data
-:author: Rob Pike
-:date: 24 Maret 2011
+Rob Pike
+24 Maret 2011
:toc:
@@ -9,19 +9,19 @@
Untuk mengirim struktur data dalam jaringan atau menyimpannya ke dalam sebuah
berkas, ia haruslah ditulis (_encode_) dan kemudian dibaca (_decode_) kembali.
Ada banyak _encoding_ yang tersedia, seperti:
-http://www.json.org/[JSON],
-http://www.w3.org/XML/[XML],
-http://code.google.com/p/protobuf[_protocol buffer_] dari Google, dan banyak
-lagi.
+https://www.json.org/[JSON^],
+https://www.w3.org/XML/[XML^],
+https://code.google.com/p/protobuf[_protocol buffer_^]
+dari Google, dan banyak lagi.
Dan sekarang ada satu lagi, disediakan oleh paket Go
-https://golang.org/pkg/encoding/gob/[gob].
+https://pkg.go.dev/encoding/gob[gob^].
Kenapa mendefinisikan _encoding_ baru?
Ia menambah kerja dan tampak mubazir.
Kenapa tidak menggunakan format yang ada?
Pertama, Go punya semuanya!
Go memiliki
-https://golang.org/pkg/[paket-paket]
+https://pkg.go.dev/std[paket-paket^]
yang mendukung semua _encoding_ yang disebutkan di atas
(paket http://github.com/golang/protobuf[_protocol buffer_] ada pada
repositori terpisah namun yang paling sering diunduh).
@@ -50,10 +50,10 @@ definisi bahasa yang terpisah atau "protocol compiler".
Struktur data saja sudah cukup bagi paket gob untuk mengetahui bagaimana
menulis dan membaca sebuah data.
Di sisi lain, pendekatan ini berarti gob tidak akan pernah bisa bekerja
-dengan bahasa pemrograman lain, namun tidak apa-apa: gob adalah Go sentris.
+dengan bahasa pemrograman lain, namun tidak apa-apa: gob adalah Go.
Efisiensi juga penting.
-Representasi tekstual, dicontohkan pada XML dan JSON, terlalu lambat bila
+Representasi teks, seperti pada XML dan JSON, terlalu lambat bila
digunakan sebagai pusat komunikasi jaringan yang efisien.
Sistem _encoding_ dengan _binary_ memang dibutuhkan.
@@ -63,7 +63,8 @@ Artinya, _stream_ gob yang dibaca dari awal, memiliki informasi yang cukup
sehingga keseluruhan _stream_ dapat dibaca oleh sebuah agen yang sebelumnya
tidak mengetahui isinya.
Dengan properti ini berarti kita bisa selalu membaca _stream_ gob yang
-disimpan dalam berkas, bahkan setelah kita lupa representasi dari datanya.
+disimpan dalam berkas, bahkan setelah kita lupa representasi dari data di
+dalamnya.
Ada juga beberapa hal yang kita pelajari dari pengalaman kita dengan
_protocol buffer_ dari Google.
@@ -73,7 +74,7 @@ _protocol buffer_ dari Google.
_Protocol buffer_ (PB) berpengaruh besar dalam merancang gob, namun ia
memiliki tiga fitur yang secara sengaja dihindari dalam merancang gob.
-(Kesampingkan bahwa properti dari PB itu sendiri tidaklah _self-describing_:
+(lupakan dahulu bahwa properti dari PB itu sendiri tidaklah _self-describing_:
jika kita tidak mengetahui definisi data yang digunakan untuk menulis sebuah
PB, maka kita tidak akan bisa membacanya.)
@@ -85,7 +86,7 @@ Hal ini tampak seperti batasan yang tidak berarti, setidaknya dalam Go.
Jika kita hanya ingin mengirim sebuah array dari integer, kenapa harus
disimpan dalam sebuah _struct_ terlebih dahulu?
-Selanjutnya, definisi dari sebuah PB bisa menspesifikasi bahwa
+Selanjutnya, definisi dari sebuah PB bisa men spesifikasi bahwa
field `T.x` dan `T.y` haruslah ada bila nilai bertipe `T` ditulis atau
dibaca.
Walaupun field-field yang dibutuhkan tersebut tampak seperti ide yang bagus,
@@ -95,8 +96,8 @@ dapat melaporkan kesalahan bila field-field yang dibutuhkan tersebut tidak
ditemukan nilainya.
Dan juga ada permasalahan pemeliharaan.
Suatu waktu, kita bisa saja ingin mengubah definisi data, misalnya menghapus
-field yang dibutuhkan, namun hal ini menyebabkan klien-klien yang mengkonsumsi
-data yang belum memperbarui definisi datanya menjadi _crash_.
+field yang dibutuhkan, namun hal ini menyebabkan klien-klien yang mengonsumsi
+data yang belum memperbarui definisi data menjadi _crash_.
Maka dari itu lebih baik bila kita tidak memiliki field-field yang dibutuhkan
tersebut pada saat _encoding_ sama sekali.
(PB juga memiliki field-field opsional.
@@ -111,11 +112,11 @@ Ide ini bekerja baik bila kita memiliki method-method _getter_ dan _setter_
untuk mengontrol akses terhadap field, namun akan lebih sulit ditangani secara
bersih saat penampung adalah _struct_ polos biasa.
Field yang dibutuhkan juga cukup rumit diimplementasikan: kapan nilai bawaan
-didefinisikan, tipe apa yang dimilikinya (apakah teks berupa UTF-8? atau bytes
+didefinisikan, tipe apa yang dimiliki (apakah teks berupa UTF-8? atau bytes
yang tidak perlu diinterpretasi? berapa banyak bits dalam sebuah float?)
-dan bahkan dari kesederhanaannya, ada sejumlah komplikasi dalam rancangan dan
+dan bahkan dari kesederhanaan-nya, ada sejumlah komplikasi dalam rancangan dan
implementasi PB.
-Kami memutuskan untuk tidak mengikutkannya pada gob dan kembali ke aturan
+Kami memutuskan untuk tidak mengikutkan-nya pada gob dan kembali ke aturan
biasa dari Go dengan aturan bawaan yang efektif: kecuali bila di set dengan
nilai lain, ia akan berisi "nilai kosong" untuk tipe tersebut - dan ia tidak
perlu dikirim.
@@ -138,7 +139,7 @@ dengan panjang tertentu dan tanpa ukuran.
yang sama diterapkan pada nilai _unsigned_ juga.)
Jika keduanya bernilai 7, bits yang dikirim akan identik.
Saat si penerima membaca nilai tersebut, ia menyimpannya ke dalam
-variabel, yang bisa bertipe integer apapun.
+variabel, yang bisa bertipe integer apa pun.
Maka _encoder_ bisa mengirim nilai 7 yang datang dari `int8`, namun si
penerima bisa saja menyimpannya dalam sebuah `int64`.
Hal ini wajar: nilainya adalah integer dan selama dapat disimpan, semua akan
@@ -152,7 +153,7 @@ Fleksibilitas ini juga berlaku pada pointer.
Sebelum dikirim, semua pointer akan diratakan.
Nilai dari tipe `int8`, `*int8`, `**int8`, `****int8`, dan seterusnya, dikirim
sebagai nilai integer, yang kemudian dapat disimpan dalam `int` berukuran
-apapun, atau `*int`, atau `****int`, dan seterusnya.
+apa pun, atau `*int`, atau `****int`, dan seterusnya.
Sekali lagi, hal ini untuk fleksibilitas.
Fleksibilitas juga terjadi karena saat membaca sebuah _struct_, hanya
@@ -175,11 +176,11 @@ type U struct{ X, Y *int8 } // Catatan: pointer ke int8
var u U
----
-dan mendapatkan nilai `u` dengan hanya `X` yang diset (yang menunjuk alamat
-variabel `int8` yang diset dengan 7);
+dan mendapatkan nilai `u` dengan hanya `X` yang di set (yang menunjuk alamat
+variabel `int8` yang di set dengan 7);
field `Z` diindahkan - mau disimpan di mana?
-Saat membaca _struct_, field dicocokan berdasarkan nama dan tipe yang
-kompatibel, dan hanya field-field yang ada dikeduanya yang terpengaruh.
+Saat membaca _struct_, field dicocokkan berdasarkan nama dan tipe yang
+kompatibel, dan hanya field-field yang ada pada keduanya yang terpengaruh.
Pendekatan sederhana ini mengatasi permasalahan "field opsional": saat tipe
`T` berkembang dengan menambahkan field baru, penerima yang ketinggalan masih
dapat berfungsi dengan bagian tipe yang dikenali.
@@ -190,32 +191,33 @@ Dari perilaku tipe dan nilai integer di atas kita dapat membangun semua tipe
lainnya: byte, string, array, slice, map, bahkan float.
Nilai _floating-point_ direpresentasikan dengan pola bit _floating-point_ IEEE
754, disimpan sebagai integer, yang bekerja baik selama kita tahu tipenya.
-Nilai integer tersebut dikirim dalam urutan byte-dibalik karena nilai
+Nilai integer tersebut dikirim dalam urutan byte-terbalik karena nilai
bersama dari bilangan _floating-point_, seperti integer yang kecil, memiliki
banyak nilai nol pada akhirannya yang dapat diindahkan saat pengiriman.
-Salah satu fitur yang bagus dari gob ialah Go membolehkan kita mendifiniskan
+Salah satu fitur yang bagus dari gob ialah Go membolehkan kita mendefinisikan
_encoding_ sendiri dengan memenuhi interface
-https://golang.org/pkg/encoding/gob/#GobEncoder[GobEncoder]
+https://pkg.go.dev/encoding/gob#GobEncoder[GobEncoder^]
dan
-https://golang.org/pkg/encoding/gob/#GobDecoder[GobDecoder],
+https://pkg.go.dev/encoding/gob#GobDecoder[GobDecoder^],
dengan cara yang sama seperti
-https://golang.org/pkg/encoding/json/#Marshaler[Marshaler]
+https://pkg.go.dev/encoding/json#Marshaler[Marshaler^]
dan
-https://golang.org/pkg/encoding/json/#Unmarshaler[Unmarshaler]
-pada paket https://golang.org/pkg/encoding/json/[JSON]
+https://pkg.go.dev/encoding/json#Unmarshaler[Unmarshaler^]
+pada paket
+https://pkg.go.dev/encoding/json[JSON^]
dan juga seperti pada interface
-https://golang.org/pkg/fmt/#Stringer[Stringer]
+https://pkg.go.dev/fmt#Stringer[Stringer^]
dari
-https://golang.org/pkg/fmt/[paket fmt].
+https://pkg.go.dev/fmt[paket fmt^].
Fasilitas ini memungkinkan merepresentasikan fitur khusus, membuat
-batasan-batasan, atau merahasiakan sesuatu saat data ditransmisikan.
+batasan-batasan, atau merahasiakan sesuatu saat data dikirim.
Lihat
-https://golang.org/pkg/encoding/gob/[dokumentasi] dari paket gob untuk lebih
-rincinya.
+https://pkg.go.dev/encoding/gob[dokumentasi^]
+dari paket gob untuk lebih rinci.
-== Bentuk tipe saat ditransmisi
+== Bentuk tipe saat dikirim
Pertama kali kita mengirim sebuah tipe tertentu, paket gob mengikutkan
deskripsi dari tipe tersebut dalam _stream_ data.
@@ -223,10 +225,10 @@ Yang terjadi adalah _encoder_ menulis struktur internal, dalam format standar
_encoding_ gob, yang menjelaskan tipe dan memberinya sebuah angka unik.
(Tipe-tipe dasar, berikut dengan deskripsi tipe dari _struct_, didefinisikan
terlebih dahulu oleh perangkat lunak untuk _bootstrapping_.)
-Setelah tipe dideskripsikan, ia bisa diacu dengan angka.
+Setelah tipe dideskripsikkan, ia bisa diacu dengan angka.
Maka saat kita mengirim tipe pertama kita `T`, _encoder_ gob mengirim
-deskripsi dari `T` dan men-_tag_ nya dengan angka, katakanlah 127.
+deskripsi dari `T` dan men-_tag_-nya dengan angka, katakanlah 127.
Semua nilai, termasuk yang pertama, diberi prefiks dengan angka tersebut,
sehingga _stream_ dari nilai `T` berbentuk seperti berikut:
@@ -253,14 +255,14 @@ kecuali untuk sekumpulan tipe _bootstrap_, yang mana telah terdefinisi
pada saat awal.
-== Mengkompilasi mesin
+== Mengompilasi mesin
Pada saat pertama kali kita menulis sebuah nilai dari tipe tertentu,
paket gob membuat sebuah interpretasi mesin khusus untuk tipe data tersebut.
-Ia menggunakan refleksi pada tipe untuk mengkonstruksi mesin tersebut, namun
+Ia menggunakan refleksi pada tipe untuk mengonstruksi mesin tersebut, namun
setelah mesin tersebut telah dibuat ia tidak bergantung lagi pada refleksi.
Mesin tersebut menggunakan package `unsafe` dan beberapa trik untuk
-mengkonversi data menjadi byte dengan cepat.
+mengonversi data menjadi byte dengan cepat.
Ia bisa saja menggunakan refleksi dan mengindahkan `unsafe`, namun akan lebih
lambat.
(Pendekatan yang sama, yang juga cepat, digunakan oleh dukungan terhadap
@@ -270,7 +272,7 @@ Nilai selanjutnya dari tipe yang sama menggunakan mesin yang telah
dikompilasi, sehingga bisa langsung ditulis.
(Pembaruan: Pada Go 1.4, paket unsafe tidak lagi digunakan oleh paket gob,
-dengan penurunan performansi yang ringan.)
+dengan penurunan performa yang ringan.)
Proses _decoding_ caranya sama namun lebih sukar.
Saat membaca sebuah nilai, paket gob menyimpan _slice_ byte yang
@@ -285,14 +287,14 @@ Setelah mesin _decoding_ tersebut dibuat, ia tidak lagi menggunakan refleksi
== Penggunaan
-Ada banyak hal yang terjadi dibelakang penulisan dan pembacaan data dengan
+Ada banyak hal yang terjadi di belakang penulisan dan pembacaan data dengan
gob, namun hasilnya adalah sebuah sistem _encoding_ yang efisien dan mudah
digunakan untuk mengirim data.
Berikut contoh komplit yang memperlihatkan perbedaan penulisan dan pembacaan
dari beberapa tipe.
-Lihatlah bagaimana mudahnya mengirim dan menerima nilai;
+Lihatlah bagaimana mudah-nya mengirim dan menerima nilai;
apa yang harus kita lakukan hanyalah memberi nilai dan variabel ke
-https://golang.org/pkg/encoding/gob/[paket gob]
+https://pkg.go.dev/encoding/gob[paket gob^]
dan ia akan melakukan semuanya.
----
@@ -339,17 +341,17 @@ func main() {
----
Anda bisa meng-_compile_ dan menjalankan contoh kode ini dalam
-http://play.golang.org/p/_-OJV-rwMq[Playground Go].
+https://play.golang.org/p/_-OJV-rwMq[Playground Go^].
-https://golang.org/pkg/net/rpc/[Paket rpc] dibangun dari gob untuk mengubah
+https://pkg.go.dev/net/rpc[Paket rpc^] dibangun dari gob untuk mengubah
otomatisasi tulis/baca seperti di atas ke dalam sebuah transpor pemanggilan
_method_ dalam jaringan.
-== Rincian
+== Rinci
-https://golang.org/pkg/encoding/gob/[Dokumentasi paket gob], terutama berkas
-https://golang.org/src/pkg/encoding/gob/doc.go[doc.go],
+https://pkg.go.dev/encoding/gob[Dokumentasi paket gob^], terutama berkas
+https://golang.org/src/pkg/encoding/gob/doc.go[doc.go^],
menjelaskan lebih rinci dari apa yang dibahas di sini dan mengikutkan contoh
lengkap yang memperlihatkan bagaimana _encoding_ merepresentasikan data.
Jika tertarik dengan dalaman dari implementasi gob, berkas tersebut
diff --git a/_content/blog/introducing-go-playground/index.adoc b/_content/blog/introducing-go-playground/index.adoc
index eb57956..d350499 100644
--- a/_content/blog/introducing-go-playground/index.adoc
+++ b/_content/blog/introducing-go-playground/index.adoc
@@ -3,14 +3,14 @@
:date: 15 September 2010
Jika Anda mengunjungi
-https://golang.org[golang.org]
+https://golang.org[golang.org^]
hari ini Anda akan melihat tampilan yang baru.
Kami telah merombak rancangan dan konten situs supaya lebih mudah dicari.
Perubahan ini juga direfleksikan pada antarmuka dari
-https://golang.org/cmd/godoc/[godoc],
+https://golang.org/cmd/godoc/[godoc^],
perkakas dokumentasi Go.
Namun berita sebenarnya adalah tentang fitur baru:
-https://golang.org/[Go Playground].
+https://golang.org/[Go Playground^].
image::https://blog.golang.org/introducing-go-playground_Untitled.png[Go Playground]
@@ -38,5 +38,5 @@ untuk dapat merasakannya secara penuh Anda harus
link:/doc/install[memasangnya sendiri di lokal].
Jika Anda pernah ingin mencoba Go namun belum sempat, kenapa tidak coba
kunjungi
-https://golang.org[golang.org]
+https://golang.org[golang.org^]
untuk mencobanya sekarang?
diff --git a/_content/blog/introducing-gofix/index.adoc b/_content/blog/introducing-gofix/index.adoc
index 74ad9cd..3dae9f5 100644
--- a/_content/blog/introducing-gofix/index.adoc
+++ b/_content/blog/introducing-gofix/index.adoc
@@ -17,8 +17,9 @@ Setiap perubahan API ini terjadi pada _snapshot_ Go di minggu yang berbeda;
bersamaan, mereka merepresentasikan sejumlah perubahan manual yang signifikan
untuk memperbarui kode yang sudah ada.
-link:/cmd/fix/[Gofix^] adalah sebuah perkakas baru yang mengurangi jumlah
-pekerjaan untuk memperbarui kode.
+link:/cmd/fix/[Gofix^]
+adalah sebuah perkakas baru yang mengurangi jumlah pekerjaan untuk memperbarui
+kode.
Ia membaca berkas sumber kode, mencari penggunaan API yang lama, menulis ulang
sumber kode tersebut supaya menggunakan API yang baru.
Tidak semua perubahan API menjaga fungsionalitas dari API yang lama, jadi
@@ -60,8 +61,7 @@ Kami bahkan menggunakan gofix untuk memperbarui sumber kode internal pada
Google saat waktunya membangun dengan rilis Go yang baru.
Sebagai contohnya, gofix dapat menulis ulang kode seperti
-http://codereview.appspot.com/4353043/diff/10001/src/pkg/fmt/print.go#newcode657[potongan
-kode dari "fmt/print.go"^]:
+https://codereview.appspot.com/4353043/diff/10001/src/pkg/fmt/print.go#newcode657[potongan kode dari "fmt/print.go"^]:
----
switch f := value.(type) {
@@ -102,11 +102,10 @@ Perubahan yang baru sangat banyak namun hampir semuanya bersifat mekanis,
bentuk perubahan yang sangat baik ditangani oleh komputer.
Gofix memungkinkan karena Go memiliki pustaka standar untuk
-https://golang.org/pkg/go/parser[mengurai berkas sumber Go menjadi pohon
-sintaksis^]
-dan juga untuk
-https://golang.org/pkg/go/printer[menulis pohon sintaksis tersebut kembali
-menjadi sumber kode Go^].
+https://golang.org/pkg/go/parser[mengurai berkas sumber Go^]
+menjadi pohon sintaksis dan juga untuk
+https://golang.org/pkg/go/printer[menulis pohon sintaksis^]
+tersebut kembali menjadi sumber kode Go.
Yang paling penting, pustaka penulisan Go menulis kode dalam format resmi
(yang biasanya dilakukan perkakas gofmt), membolehkan gofix untuk membuat
perubahan bersifat mekanis terhadap Go program tanpa menyebabkan perubahan
diff --git a/_content/blog/json-and-go/index.adoc b/_content/blog/json-and-go/index.adoc
index 7ad146a..691e902 100644
--- a/_content/blog/json-and-go/index.adoc
+++ b/_content/blog/json-and-go/index.adoc
@@ -1,7 +1,7 @@
= JSON dan Go
:author: Andrew Gerrand
:date: 25 Januari 2011
-:package-json: https://golang.org/pkg/encoding/json
+:package-json: https://pkg.go.dev/encoding/json
== Pendahuluan
@@ -10,17 +10,19 @@ Secara sintaks ia menyerupai objek dan _list_ dari JavaScript.
Ia umumnya digunakan untuk komunikasi antara web back-end dan program
JavaScript yang berjalan di peramban, namun ia digunakan diberbagai tempat
lainnya juga.
-Situsnya, https://json.org[json.org], menyediakan definisi standar yang jelas
-dan ringkas.
+Situsnya,
+https://json.org[json.org^],
+menyediakan definisi standar yang jelas dan ringkas.
-{package-json}[Paket json] menyediakan cara yang cepat untuk membaca dan
-menulis data JSON dalam program Go anda.
+{package-json}[Paket json^]
+menyediakan cara yang cepat untuk membaca dan menulis data JSON dalam program
+Go anda.
== Penulisan (_encoding_)
Untuk meng-_encode_ data JSON kita menggunakan fungsi
-https://golang.org/pkg/encoding/json#Marshal[Marshal].
+https://pkg.go.dev/encoding/json#Marshal[Marshal^].
----
func Marshal(v interface{}) ([]byte, error)
@@ -79,7 +81,7 @@ dalam keluaran JSON.
== Pembacaan (_decoding_)
Untuk membaca data JSON kita menggunakan fungsi
-https://golang.org/pkg/encoding/json#Unmarshal[Unmarshal].
+https://pkg.go.dev/encoding/json#Unmarshal[Unmarshal^].
----
func Unmarshal(data []byte, v interface{}) error
@@ -116,8 +118,8 @@ Untuk JSON dengan key "Foo", `Unmarshal` akan mencari field dalam struct
tujuan (dengan urutan berikut):
* Field yang diekspor dengan tag "Foo" (lihat
- https://golang.org/ref/spec#Struct_types[spesifikasi Go] untuk informasi
- lebih lanjut tentang tag pada struct),
+ https://golang.org/ref/spec#Struct_types[spesifikasi Go^]
+ untuk informasi lebih lanjut tentang tag pada struct),
* Field yang diekspor bernama "Foo", atau
@@ -317,9 +319,9 @@ atau `Msg` yang bernilai `nil`.
Paket json menyediakan tipe `Decoder` dan `Encoder` untuk mendukung operasi
pembacaan dan penulisan data JSON berkelanjutan (_streaming_).
Fungsi `NewDecoder` dan `NewEncoder` membungkus tipe interface
-https://golang.org/pkg/io/#Reader[io.Reader]
+https://pkg.go.dev/io/#Reader[io.Reader^]
dan
-https://golang.org/pkg/io/#Writer[io.Writer].
+https://pkg.go.dev/io/#Writer[io.Writer^].
----
func NewDecoder(r io.Reader) *Decoder
@@ -367,6 +369,6 @@ ke koneksi HTTP, WebSocket, atau berkas.
== Referensi
Untuk informasi lebih lanjut lihat
-https://golang.org/pkg/encoding/json/[dokumentasi paket json].
+https://pkg.go.dev/encoding/json/[dokumentasi paket json^].
Untuk contoh penggunaan json lihat sumber berkas dari
-https://golang.org/pkg/net/rpc/jsonrpc/[paket jsonrpc].
+https://pkg.go.dev/net/rpc/jsonrpc/[paket jsonrpc^].
diff --git a/_content/blog/json-rpc/index.adoc b/_content/blog/json-rpc/index.adoc
index fbbc003..58d147a 100644
--- a/_content/blog/json-rpc/index.adoc
+++ b/_content/blog/json-rpc/index.adoc
@@ -3,15 +3,15 @@ Andrew Gerrand
27 April 2010
Di artikel ini kita memperlihatkan contoh di mana
-link:/doc/effective_go.html#interfaces_and_types[interface]
+link:/doc/effective_go.html#interfaces_and_types[interface^]
pada Go mempermudah melakukan perubahan (_refactor_) pada kode yang telah ada
untuk membuatnya lebih fleksibel dan ekstensibel.
Awalnya, pustaka standar
-https://golang.org/pkg/net/rpc/[paket RPC]
+https://pkg.go.dev/net/rpc/[paket RPC^]
menggunakan format kostum bernama
-https://golang.org/pkg/encoding/gob/[gob].
+https://pkg.go.dev/encoding/gob/[gob^].
Untuk beberapa aplikasi, kita ingin menggunakan
-https://golang.org/pkg/encoding/json/[JSON]
+https://pkg.go.dev/encoding/json/[JSON^]
sebagai format alternatif.
Pertama kita mendefinisikan pasangan interface untuk menjelaskan
@@ -51,8 +51,7 @@ Setelah melakukan perubahan yang sama di sisi klien, semua pekerjaan yang
harus dilakukan telah selesai untuk paket RPC.
Semua ini membutuhkan tidak lebih dari 20 menit!
Setelah dirapikan sedikit dan melakukan pengujian pada kode yang baru,
-https://github.com/golang/go/commit/dcff89057bc0e0d7cb14cf414f2df6f5fb1a41ec[perubahan
-terakhir]
+https://github.com/golang/go/commit/dcff89057bc0e0d7cb14cf414f2df6f5fb1a41ec[perubahan terakhir^]
dikirim.
Pada bahasa beroritentasi objek-turunan seperti Java atau C++, langkah yang
diff --git a/_content/blog/laws-of-reflection/index.adoc b/_content/blog/laws-of-reflection/index.adoc
index 5005cfe..d586bf8 100644
--- a/_content/blog/laws-of-reflection/index.adoc
+++ b/_content/blog/laws-of-reflection/index.adoc
@@ -47,7 +47,8 @@ Sebuah variabel interface dapat menyimpan nilai konkret apapun (yang bukan
interface) selama nilai tersebut mengimplementasikan method-method dari
interface tersebut.
Salah satu contoh interface yang cukup dikenal yaitu `io.Reader` dan
-`io.Writer`, https://golang.org/pkg/io/[paket `io`]:
+`io.Writer`,
+https://pkg.go.dev/io[paket `io`^]:
----
// Reader is the interface that wraps the basic Read method.
@@ -101,8 +102,7 @@ dekat.
== Representasi dari sebuah interface
Russ Cox telah menuliskan
-https://research.swtch.com/2009/12/go-data-structures-interfaces.html[secara
-rinci dalam blognya]
+https://research.swtch.com/2009/12/go-data-structures-interfaces.html[secara rinci dalam blognya^]
tentang representasi dari nilai interface dalam Go.
Kita tidak perlu mengulang rincian yang sama di sini, namun sebuah kesimpulan
yang ringkas diperlukan.
@@ -176,9 +176,10 @@ Sekarang kita siap untuk refleksi.
Pada dasarnya, refleksi hanyalah sebuah mekanisme untuk memeriksa pasangan
tipe dan nilai yang disimpan dalam sebuah variabel interface.
Untuk memulai, ada dua tipe yang perlu kita ketahui dalam
-https://golang.org/pkg/reflect/[paket `reflect`]:
-https://golang.org/pkg/reflect/#Type[`Type`] dan
-https://golang.org/pkg/reflect/#Value[`Value`].
+https://pkg.go.dev/reflect[paket `reflect`^]:
+https://pkg.go.dev/reflect#Type[`Type`^]
+dan
+https://pkg.go.dev/reflect#Value[`Value`^].
Kedua tipe tersebut memberi akses ke isi dari sebuah variabel interface,
dan dua fungsi sederhana, dikenal dengan `reflect.TypeOf()` dan
`reflect.ValueOf()`, mengembalikan `reflect.Type` dan `reflect.Value` dari
@@ -211,7 +212,8 @@ tipe: float64
Anda mungkin berpikir di sebelah mana interface-nya? Secara program tampak
mengirim variabel `x` bertipe `float64`, bukan sebuah nilai interface, ke
`reflect.TypeOf`.
-https://golang.org/pkg/reflect/#TypeOf[Dalam dokumentasinya], parameter dari
+https://pkg.go.dev/reflect#TypeOf[Dalam dokumentasinya^],
+parameter dari
`reflect.TypeOf()` adalah sebuah interface kosong:
----
@@ -536,7 +538,8 @@ Kita buat objek refleksi dengan alamat dari struct karena kita ingin
mengubahnya nanti.
Kemudian kita set `typeOfT` berisi tipe dari `t` dan mengiterasi field-field
menggunakan pemanggilan method langsung (lihat
-https://golang.org/pkg/reflect/[paket reflect] untuk lebih rinci).
+https://pkg.go.dev/reflect/[paket reflect^]
+untuk lebih rinci).
Kita juga bisa mengekstrak nama dari field dari tipe struct, namun field itu
sendiri adalah objek dari `reflect.Value`.
diff --git a/_content/blog/learn-go-from-your-browser/index.adoc b/_content/blog/learn-go-from-your-browser/index.adoc
index 9bc3acb..4ad4b7d 100644
--- a/_content/blog/learn-go-from-your-browser/index.adoc
+++ b/_content/blog/learn-go-from-your-browser/index.adoc
@@ -3,14 +3,14 @@
:date: 4 Oktober 2011
Kami sangat senang mengumumkan
-https://tour.golang-id.org/[Sebuah tur dari Go],
+https://tour.golang-id.org/[Sebuah tur dari Go^],
sebuah panduan tur dari bahasa pemrograman Go yang dapat Anda jalankan lewat
peramban Anda.
Tur tersebut mendemonstrasikan bahasa lewat contoh-contoh kode yang dapat Anda
ubah, kompilasi, dan jalankan lewat situs tur itu sendiri.
(Teknologi
-https://golang.org/doc/play/[Go Playground]
+https://golang.org/doc/play/[Go Playground^]
yang bekerja di belakangnya.)
Tur tersebut memiliki tiga bagian.
@@ -21,7 +21,7 @@ Setiap bagian berakhir dengan beberapa latihan supaya Anda dapat melatih apa
yang Anda pelajari.
Jadi, tunggu apa lagi?
-https://tour.golang-id.org/[Mulailah sekarang!]
+https://tour.golang-id.org/[Mulailah sekarang!^]
== Artikel terkait
diff --git a/_content/blog/migrating-to-go-modules/index.adoc b/_content/blog/migrating-to-go-modules/index.adoc
index f12a773..3c6d92c 100644
--- a/_content/blog/migrating-to-go-modules/index.adoc
+++ b/_content/blog/migrating-to-go-modules/index.adoc
@@ -13,11 +13,11 @@ Tulisan ini adalah bagian ke 2 dari sebuah seri.
Proyek-proyek Go menggunakan beragam strategi manajemen dependensi.
Perkakas
-https://golang.org/cmd/go/#hdr-Vendor_Directories[vendor]
+https://golang.org/cmd/go/#hdr-Vendor_Directories[vendor^]
seperti
-https://github.com/golang/dep[dep]
+https://github.com/golang/dep[dep^]
dan
-https://github.com/Masterminds/glide[glide]
+https://github.com/Masterminds/glide[glide^]
cukup terkenal, namun mereka memiliki perbedaan yang luas dalam perilaku dan
tidak saling bekerja satu sama lain.
Beberapa proyek bahkan menyimpan semua sumber kode di GOPATH dalam sebuah
@@ -92,8 +92,7 @@ $
"go mod init" membuat berkas "go.mod" yang baru dan secara otomatis mengimpor
dependensi dari "Godeps.json", "Gopkg.lock", atau sejumlah
-https://go.googlesource.com/go/+/362625209b6cd2bc059b6b0a67712ddebab312d9/src/cmd/go/internal/modconv/modconv.go#9[format
-lain yang didukung].
+https://go.googlesource.com/go/+/362625209b6cd2bc059b6b0a67712ddebab312d9/src/cmd/go/internal/modconv/modconv.go#9[format lain yang didukung^].
Argumen dari "go mod init" adalah path modul, lokasi di mana modul dapat
ditemukan.
@@ -193,7 +192,7 @@ Tanpa adanya berkas konfigurasi dari manajemen dependensi lainnya,
"go mod init" hanya akan membuat berkas "go.mod" yang berisi _directive_
"module" dan "go".
Dalam contoh ini, kita men-set path modul ke "golang.org/x/blog" karena itulah
-https://golang.org/cmd/go/#hdr-Remote_import_paths[path impornya].
+link:/cmd/go#hdr-Remote_import_paths[path impornya^].
Pengguna bisa mengimpor paket-paket dengan path tersebut, dan pemilik modul
harus berhati-hati supaya tidak mengubahnya sewaktu-waktu.
@@ -302,7 +301,7 @@ Terakhir, Anda sebaiknya memberi tag dan merilis versi baru dari modul Anda.
Hal ini adalah opsional bila Anda belum pernah merilis versi sebelumnya, namun
tanpa adanya rilis resmi, pengguna lain akan bergantung pada _commit_ tertentu
menggunakan
-https://golang.org/cmd/go/#hdr-Pseudo_versions[versi-pseudo],
+https://golang.org/cmd/go/#hdr-Pseudo_versions[versi-pseudo^],
yang mungkin lebih sukar untuk didukung.
----
@@ -318,7 +317,7 @@ sebuah _backward-compatible_ (modul Anda masih bisa digunakan oleh pengguna
lain tanpa adanya kerusakan di sisi mereka) -- namun hal ini adalah perubahan
yang signifikan, dan bisa saja menimbulkan permasalahan nantinya.
Jika Anda sudah memiliki tag dengan versi, Anda harus meningkatkan
-https://semver.org/lang/id/spec/v2.0.0.html#spec-item-7[versi minor].
+https://semver.org/lang/id/spec/v2.0.0.html#spec-item-7[versi minor^].
Lihat
link:/blog/publishing-go-modules[Menerbitkan Go Modul]
untuk belajar bagaimana meningkatkan dan menerbitkan versi.
@@ -331,18 +330,18 @@ Setiap perintah "import" yang mengacu ke sebuah paket dalam modul haruslah
memiliki prefiks path modul.
Namun, perintah "go" bisa menemukan sebuah repositori yang berisi modul lewat
banyak
-https://golang.org/cmd/go/#hdr-Remote_import_paths[path impor remote]
+https://golang.org/cmd/go/#hdr-Remote_import_paths[path impor remote^]
yang berbeda.
Sebagai contohnya, "golang.org/x/lint" dan "github.com/golang/lint" mengacu
pada repositori yang sama yang disimpan di
-https://go.googlesource.com/lint[go.googlesource.com/lint].
-https://go.googlesource.com/lint/+/refs/heads/master/go.mod[Berkas go.mod]
+https://go.googlesource.com/lint[go.googlesource.com/lint^].
+https://go.googlesource.com/lint/+/refs/heads/master/go.mod[Berkas go.mod^]
di dalam repositori tersebut mendeklarasikan path-nya ke "golang.org/x/lint",
jadi hanya path tersebut lah yang berkorespondensi ke modul yang valid.
Go 1.4 menyediakan mekanisme untuk mendeklarasikan path impor kanonis
menggunakan
-https://golang.org/cmd/go/#hdr-Import_path_checking[komentar "// import"],
+https://golang.org/cmd/go/#hdr-Import_path_checking[komentar "// import"^],
namun pembuat paket tidak selalu menuliskannya.
Akibatnya, kode yang ditulis sebelum adanya modul bisa saja menggunakan path
impor yang tidak kanonis tanpa menimbulkan kesalahan penamaan.
@@ -374,9 +373,9 @@ dan cara-cara untuk men-_debug_ situasi-situasi yang aneh.
Bila ada tanggapan dan bantuan untuk membantu manajemen dependensi di Go,
silakan kirim
-https://golang.org/issue/new[laporan kesalahan]
+https://golang.org/issue/new[laporan kesalahan^]
atau
-https://golang.org/wiki/ExperienceReports[laporan pengalaman].
+https://golang.org/wiki/ExperienceReports[laporan pengalaman^].
Terima kasih untuk semua tanggapan dan bantuan yang telah menjadikan Go modul
lebih baik.
diff --git a/_content/blog/module-compatibility/index.adoc b/_content/blog/module-compatibility/index.adoc
index d5c8369..eaef065 100644
--- a/_content/blog/module-compatibility/index.adoc
+++ b/_content/blog/module-compatibility/index.adoc
@@ -6,17 +6,17 @@ Jean de Klerk; Jonathan Amsterdam
Tulisan ini adalah bagian ke 5 dari sebuah seri.
-* Bagian 1 - link:/blog/using-go-modules[Menggunakan Go Modul]
-* Bagian 2 - link:/blog/migrating-to-go-modules[Migrasi ke Go Modul]
-* Bagian 3 - link:/blog/publishing-go-modules[Menerbitkan Go Modul]
-* Bagian 4 - link:/blog/v2-go-modules[Go Modul: v2 dan seterusnya]
+* Bagian 1 - link:/blog/using-go-modules[Menggunakan Go Modul^]
+* Bagian 2 - link:/blog/migrating-to-go-modules[Migrasi ke Go Modul^]
+* Bagian 3 - link:/blog/publishing-go-modules[Menerbitkan Go Modul^]
+* Bagian 4 - link:/blog/v2-go-modules[Go Modul: v2 dan seterusnya^]
* Bagian 5 - Menjaga Modul Anda tetap Kompatibel (artikel ini)
Modul Anda akan terus berkembang seiring waktu saat Anda menambahkan fitur
yang baru, mengubah perilaku modul, dan/atau mengganti bagian modul menjadi
publik.
Seperti yang telah kita diskusikan pada
-link:/blog/v2-go-modules[Go Modul: v2 dan seterusnya],
+link:/blog/v2-go-modules[Go Modul: v2 dan seterusnya^],
perubahan besar pada modul dengan versi v1+ harus terjadi dengan meningkatkan
versi mayor (atau dengan mengadopsi path modul yang baru).
@@ -120,7 +120,7 @@ baru pada suatu saat nanti, Anda bisa merancangnya terlebih dahulu dengan
membuat sebuah argumen opsional sebagai bagian dari fungsi.
Cara paling sederhana untuk melakukan hal ini yaitu dengan menambahkan sebuah
argumen bertipe struct, seperti yang dilakukan oleh fungsi
-https://pkg.go.dev/crypto/tls?tab=doc#Dial[crypto/tls.Dial]:
+https://pkg.go.dev/crypto/tls?tab=doc#Dial[crypto/tls.Dial^]:
----
func Dial(network, addr string, config *Config) (*Conn, error)
@@ -155,7 +155,7 @@ terjadi (keadaan yang mana _network socket_ dapat menerima koneksi).
Perubahan yang diinginkan bisa berupa sebuah fungsi baru yang menerima sebuah
context, network, alamat, dan fungsi kontrol.
Namun, penulis paket `net` menambahkan struct
-https://pkg.go.dev/net@go1.11?tab=doc#ListenConfig[ListenConfig]
+https://pkg.go.dev/net@go1.11?tab=doc#ListenConfig[ListenConfig^]
untuk mengantisipasi adanya penambahan opsi selanjutnya suatu saat nanti.
Daripada menambahkan fungsi baru dengan nama yang aneh, kita menambahkan
method `Listen` ke `ListenConfig`:
@@ -172,12 +172,11 @@ Cara lain untuk menyediakan opsi baru dimasa depan yaitu dengan pola "tipe
Option", yang mana opsi-opsi dikirim sebagai argumen variadik, dan setiap opsi
adalah sebuah fungsi yang mengubah nilai yang akan dibangun.
Cara ini dijelaskan lebih rinci oleh tulisan Rob Pike
-https://commandcenter.blogspot.com/2014/01/self-referential-functions-and-design.html[Self-referential
-functions and the design of options].
+https://commandcenter.blogspot.com/2014/01/self-referential-functions-and-design.html[Self-referential functions and the design of options^].
Salah satu contoh umum adalah fungsi
-https://pkg.go.dev/google.golang.org/grpc?tab=doc#DialOption[DialOption]
+https://pkg.go.dev/google.golang.org/grpc?tab=doc#DialOption[DialOption^]
pada paket
-https://pkg.go.dev/google.golang.org/grpc?tab=doc[google.golang.org/grpc].
+https://pkg.go.dev/google.golang.org/grpc?tab=doc[google.golang.org/grpc^].
Tipe Option memiliki peran yang sama dengan struct Option pada argumen fungsi:
cara mudah untuk mengirim konfigurasi yang mengubah perilaku.
@@ -229,18 +228,18 @@ dan bilamana interface yang lama digunakan, kita memeriksa apakah tipe yang
diberikan adalah tipe yang lama atau yang baru.
Mari kita ilustrasikan cara ini dengan contoh dari paket
-https://pkg.go.dev/archive/tar?tab=doc[archive/tar].
+https://pkg.go.dev/archive/tar[archive/tar^].
Method
-https://pkg.go.dev/archive/tar?tab=doc#NewReader[tar.NewReader]
+https://pkg.go.dev/archive/tar#NewReader[tar.NewReader^]
menerima sebuah `io.Reader`, suatu waktu tim Go menyadari bahwa akan lebih
efisien untuk melewati header dari satu berkas ke berkas yang lain jika kita
dapat memanggil
-https://pkg.go.dev/io?tab=doc#Seeker[Seek].
+https://pkg.go.dev/io#Seeker[Seek^].
Namun, kita tidak dapat menambahkan method `Seek` ke `io.Reader`: hal ini akan
menimbulkan perubahan pada semua pengguna `io.Reader`.
Cara lainnya yaitu dengan mengganti `tar.NewReader` untuk menerima
-https://pkg.go.dev/io?tab=doc#ReadSeeker[io.ReadSeeker]
+https://pkg.go.dev/io#ReadSeeker[io.ReadSeeker^]
bukan `io.Reader` lagi, secara `io.ReadSeeker` mendukung `io.Reader` and
`Seek` (lewat interface `io.Seeker`).
Tetapi, seperti yang telah kita bahas di atas, mengubah argumen dari fungsi
@@ -258,7 +257,7 @@ type Reader struct {
func NewReader(r io.Reader) *Reader {
return &Reader{r: r}
-}
+n}
func (r *Reader) Read(b []byte) (int, error) {
if rs, ok := r.r.(io.Seeker); ok {
@@ -269,7 +268,7 @@ func (r *Reader) Read(b []byte) (int, error) {
----
(Lihat
-https://github.com/golang/go/blob/60f78765022a59725121d3b800268adffe78bde3/src/archive/tar/reader.go#L837[reader.go]
+https://github.com/golang/go/blob/60f78765022a59725121d3b800268adffe78bde3/src/archive/tar/reader.go#L837[reader.go^]
untuk kode aslinya.)
Saat Anda menemui kasus seperti `tar.NewReader` di atas, yang mana Anda harus
@@ -297,8 +296,7 @@ Hal ini mencegah tipe-tipe yang didefinisikan di luar paket Anda dari
memenuhi interface Anda tanpa melakukan _embedding_, membebaskan Anda dari
menambahkan method suatu saat nanti tanpa mengganggu implementasi pengguna.
Contohnya, lihat
-https://github.com/golang/go/blob/83b181c68bf332ac7948f145f33d128377a09c42/src/testing/testing.go#L564-L567[fungsi
-private pada testing.TB].
+https://github.com/golang/go/blob/83b181c68bf332ac7948f145f33d128377a09c42/src/testing/testing.go#L564-L567[fungsi private pada testing.TB^].
----
type TB interface {
@@ -314,8 +312,9 @@ type TB interface {
----
Topik ini juga dieksplorasi lebih dalam dalam wicaranya Jonathan Amsterdam
-"Detecting Incompatible API Changes" (https://www.youtube.com/watch?v=JhdL5AkH-AQ[wicara],
-https://github.com/gophercon/2019-talks/blob/master/JonathanAmsterdam-DetectingIncompatibleAPIChanges/slides.pdf[salindia]).
+"Detecting Incompatible API Changes" (
+https://www.youtube.com/watch?v=JhdL5AkH-AQ[wicara^],
+https://github.com/gophercon/2019-talks/blob/master/JonathanAmsterdam-DetectingIncompatibleAPIChanges/slides.pdf[salindia^]).
== Penambahan method konfigurasi
@@ -326,7 +325,7 @@ gagal ter-_compile_.
Namun, perubahan perilaku juga dapat mengganggu pengguna, walaupun kode dari
sisi pengguna sukses di-_compile_.
Sebagai contohnya, banyak user menganggap
-https://pkg.go.dev/encoding/json?tab=doc#Decoder[json.Decoder]
+https://pkg.go.dev/encoding/json?tab=doc#Decoder[json.Decoder^]
mengindahkan field dalam JSON yang tidak ada di dalam struct.
Pada saat tim Go ingin mengembalikan eror untuk kasus ini, mereka harus
berhati-hati.
@@ -336,7 +335,7 @@ sebelumnya tidak ada eror.
Jadi, daripada mengubah perilaku untuk semua user, tim Go menambahkan sebuah
method konfigurasi pada struct `Decoder`:
-https://pkg.go.dev/encoding/json?tab=doc#Decoder.DisallowUnknownFields[Decoder.DisallowUnknownFields].
+https://pkg.go.dev/encoding/json?tab=doc#Decoder.DisallowUnknownFields[Decoder.DisallowUnknownFields^].
Melakukan pemanggilan pada method tersebut berarti pengguna _membolehkan_
perilaku yang baru, dan tanpa adanya pemanggilan method tersebut maka perilaku
dari `json.Decoder` akan tetap seperti yang lama.
@@ -359,7 +358,7 @@ Masih ingat para penulis paket `net` menambahkan `ListenConfig` pada Go 1.11
karena mereka berpikir bahwa akan ada opsi-opsi selanjutnya?
Ternyata mereka benar.
Pada Go 1.13,
-https://pkg.go.dev/net@go1.13?tab=doc#ListenConfig[field KeepAlive]
+https://pkg.go.dev/net@go1.13?tab=doc#ListenConfig[field KeepAlive^]
ditambahkan untuk membolehkan pengguna mematikan fungsi keep-alive dan
mengatur periode-nya.
Nilai baku kosong dari KeepAlive tetap menjaga perilaku asli dari keep-alive
@@ -378,7 +377,7 @@ semua kode yang membandingkan nilai dari struct menjadi gagal.
Untuk menjaga supaya struct tetap dapat dikomparasi, jangan menambahkan field
yang tidak dapat dikomparasi ke struct tersebut.
Anda dapat membuat unit tes untuk itu, atau menggunakan perkakas
-https://pkg.go.dev/golang.org/x/exp/cmd/gorelease?tab=doc[gorelease]
+https://pkg.go.dev/golang.org/x/exp/cmd/gorelease?tab=doc[gorelease^]
untuk menangkap kemungkinan masalah ini terjadi suatu saat nanti.
Untuk mencegah komparasi, pastikan struct tersebut memiliki field yang tidak
diff --git a/_content/blog/module-mirror-launch/index.adoc b/_content/blog/module-mirror-launch/index.adoc
index 31e6da1..d381e58 100644
--- a/_content/blog/module-mirror-launch/index.adoc
+++ b/_content/blog/module-mirror-launch/index.adoc
@@ -3,42 +3,40 @@
:date: 29 Agustus 2019
Kami sangat senang memberitahu bahwa modul
-https://proxy.golang.org/[_mirror_],
-https://index.golang.org/[indeks],
+https://proxy.golang.org/[_mirror_^],
+https://index.golang.org/[indeks^],
dan
-https://sum.golang.org/[basisdata _checksum_]
+https://sum.golang.org/[basisdata _checksum_^]
telah diluncurkan!
Perintah go akan menggunakan modul _mirror_ dan basisdata _checksum_ secara
baku untuk
-https://golang.org/doc/go1.13#introduction[pengguna Go 1.13 modul].
+https://golang.org/doc/go1.13#introduction[pengguna Go 1.13 modul^].
Lihat
-https://proxy.golang.org/privacy[halaman privasi]
+https://proxy.golang.org/privacy[halaman privasi^]
untuk informasi privasi penggunaan layanan tersebut dan
-https://golang.org/cmd/go/#hdr-Module_downloading_and_verification[dokumentasi
-perintah go]
+https://golang.org/cmd/go/#hdr-Module_downloading_and_verification[dokumentasi perintah go^]
untuk detail konfigurasi, termasuk cara mematikan fitur modul tanpa
menggunakan server tersebut atau menggunakan server yang berbeda.
Jika Anda bergantung pada modul yang tidak publik, lihat
-https://golang.org/cmd/go/#hdr-Module_configuration_for_non_public_modules[dokumentasi
-konfigurasi untuk lingkungan Anda].
+https://golang.org/cmd/go/#hdr-Module_configuration_for_non_public_modules[dokumentasi konfigurasi untuk lingkungan Anda^].
Artikel ini akan menjelaskan tentang layanan-layanan ini and keuntungan dari
menggunakan mereka, dan menyimpulkan beberapa poin dari wicara
-https://youtu.be/KqTySYYhPUE[_Go Module Proxy: Life of a Query_]
+https://youtu.be/KqTySYYhPUE[_Go Module Proxy: Life of a Query_^]
di Gophercon 2019.
Lihat wicara tersebut jika Anda tertarik melihat keseluruhan diskusi.
== Modul _mirror_
-link:/blog/versioning-proposal[Modul]
+link:/blog/versioning-proposal[Modul^]
adalah sekumpulan paket-paket Go yang diberi versi, dan isi dari setiap versi
tersebut adalah _immutable_ (kekal).
Sifat kekekalan tersebut membuatnya bisa di-_cache_ dan diautentikasi.
Bila "go get" berjalan dengan mode modul, ia harus mengambil modul yang berisi
paket yang diminta, berikut dengan dependensinya, mengubah berkas
-https://golang.org/cmd/go/#hdr-The_go_mod_file[go.mod]
+https://golang.org/cmd/go/#hdr-The_go_mod_file[go.mod^]
dan
-https://golang.org/cmd/go/#hdr-Module_downloading_and_verification[go.sum]
+https://golang.org/cmd/go/#hdr-Module_downloading_and_verification[go.sum^]
bila diperlukan.
Mengambil modul langsung lewat _version control_ sangat membutuhkan biaya,
baik secara latensi atau penyimpanan, dalam sistem Anda:
@@ -64,10 +62,11 @@ aslinya.
Hal ini bisa mempercepat pengunduhan dan melindungi Anda dari dependensi yang
hilang.
Lihat
-link:/blog/modules2019[Go Modul di 2019] untuk informasi lebih lanjut.
+link:/blog/modules2019[Go Modul di 2019^]
+untuk informasi lebih lanjut.
Tim Go menjaga sebuah modul _mirror_, di
-https://proxy.golang.org/[proxy.golang.org],
+https://proxy.golang.org/[proxy.golang.org^],
yang mana akan digunakan oleh perintah `go` secara baku untuk pengguna modul
sejak Go 1.13.
Jika Anda menggunakan versi terdahulu dari perintah `go`, maka Anda dapat
@@ -95,8 +94,7 @@ dengan yang lainnya: ia bisa saja berbeda dengan baris `go.sum` yang perintah
memberikan kode jahat yang ditargetkan kepada Anda.
Solusi Go yaitu sebuah sumber global dari baris-baris `go.sum`, yang disebut
-https://go.googlesource.com/proposal/+/master/design/25530-sumdb.md#checksum-database[basisdata
-_checksum_],
+https://go.googlesource.com/proposal/+/master/design/25530-sumdb.md#checksum-database[basisdata _checksum_^],
yang memastikan supaya perintah `go` selalu menghasilkan baris yang sama untuk
setiap berkas `go.sum`.
Setiap kali perintah `go` menerima sumber kode baru, ia dapat memverifikasi
@@ -104,11 +102,12 @@ _hash_ dari kode tersebut dengan basisdata global untuk memastikan bahwa
_hash_-nya sama, memastikan bahwa semua orang menggunakan kode yang sama untuk
versi tertentu.
-Basisdata _checksum_ dilayani oleh https://sum.golang.org/[sum.golang.org],
+Basisdata _checksum_ dilayani oleh
+https://sum.golang.org/[sum.golang.org^],
dan dibangun di atas
-https://research.swtch.com/tlog[_Transparent Log_]
+https://research.swtch.com/tlog[_Transparent Log_^]
(atau "Merkle tree") dari hash-hash yang didukung oleh
-https://github.com/google/trillian[Trillian].
+https://github.com/google/trillian[Trillian^].
Keuntungan utama dari _Merkle tree_ yaitu tahan rusak dan memiliki properti
yang tidak membolehkan perilaku jahat tidak terdeteksi, yang membuatnya lebih
dipercaya daripada hanya basisdata biasa.
@@ -121,8 +120,7 @@ Berikut ini adalah sebuah contoh dari sebuah _tree_ tersebut.
image:https://blog.golang.org/module-mirror-launch/tree.png[,700]
Basisdata _chekcsum_ mendukung
-https://go.googlesource.com/proposal/+/master/design/25530-sumdb.md#checksum-database[sekumpulan
-_endpoint_]
+https://go.googlesource.com/proposal/+/master/design/25530-sumdb.md#checksum-database[sekumpulan _endpoint_^]
yang digunakan oleh perintah `go` untuk meminta dan memverifikasi baris-baris
`go.sum`.
_Endpoint_ `/lookup` menyediakan sebuah "signed tree head" (STH) dan
@@ -145,7 +143,7 @@ atau suatu hari mengubah kode pada versi tertentu tanpa terdeteksi.
Jika Anda menggunakan Go 1.12 atau sebelumnya, Anda dapat secara manual
memeriksa berkas "go.sum" dengan basisdata _checksum_ dengan
-https://godoc.org/golang.org/x/mod/gosumcheck[gosumcheck]:
+https://godoc.org/golang.org/x/mod/gosumcheck[gosumcheck^]:
----
$ go get golang.org/x/mod/gosumcheck
@@ -162,11 +160,11 @@ komunitas Go akan menjalankannya.
== Modul indeks
Modul indeks dilayani oleh
-https://index.golang.org/[index.golang.org],
+https://index.golang.org/[index.golang.org^],
yang berisi daftar versi modul yang baru yang tersedia dalam
-https://proxy.golang.org/[proxy.golang.org].
+https://proxy.golang.org/[proxy.golang.org^].
Hal ini sangat berguna bagi pengembang perkakas yang ingin menyimpan _cache_
-https://proxy.golang.org/[proxy.golang.org]
+https://proxy.golang.org/[proxy.golang.org^]
buat mereka sendiri, atau untuk selalu tetap mutakhir dengan modul-modul
terbaru yang orang gunakan.
@@ -174,5 +172,5 @@ terbaru yang orang gunakan.
Kami berharap layanan-layanan ini meningkatkan pengalaman Anda dengan modul,
dan mendukung Anda untuk
-https://github.com/golang/go/issues/new?title=proxy.golang.org[melaporkan isu]
+https://github.com/golang/go/issues/new?title=proxy.golang.org[melaporkan isu^]
jika Anda menemukan masalah atau memiliki umpan balik!
diff --git a/_content/blog/modules2019/index.adoc b/_content/blog/modules2019/index.adoc
index 6f1dea2..0d27993 100644
--- a/_content/blog/modules2019/index.adoc
+++ b/_content/blog/modules2019/index.adoc
@@ -23,7 +23,7 @@ tahun 2019.
== Rilis
Go 1.11, dirilis pada Agustus 2018, memperkenalkan
-https://golang.org/doc/go1.11#modules[dukungan awal untuk modul].
+https://golang.org/doc/go1.11#modules[dukungan awal untuk modul^].
Pada saat sekarang, dukungan modul dapat digunakan bersamaan dengan mekanisme
tradisional berbasis GOPATH.
Perintah `go` akan menggunakan mode modul secara baku saat dijalankan di
@@ -56,7 +56,7 @@ telah dibuat yang mengasumsikan sumber kode Go disimpan dalam GOPATH.
Berpindah ke modul membutuhkan perubahan semua kode yang menggunakan asumsi
tersebut.
Kami telah merancang sebuah paket baru,
-https://godoc.org/golang.org/x/tools/go/packages[golang.org/x/tools/go/packages],
+https://godoc.org/golang.org/x/tools/go/packages[golang.org/x/tools/go/packages^],
yang mengabstraksikan operasi pencarian dan pemuatan informasi tentang sumber
kode Go untuk sebuah target yang diberikan.
Paket baru ini secara otomatis mengadopsi mode modul dan GOPATH dan ia juga
@@ -70,7 +70,7 @@ Sebagai bagian dari usaha ini, kami juga telah bekerja menggabungkan berbagai
perkakas pencari sumber kode seperti gocode, godef, dan go-outline menjadi
sebuah perkakas tunggal yang dapat digunakan lewat _command line_ (baris
perintah) dan juga mendukung
-https://langserver.org/[protokol server bahasa]
+https://langserver.org/[protokol server bahasa^]
yang digunakan oleh IDE modern.
Transisi ke modul dan perubahan dalam pemuatan paket juga mengakibatkan
@@ -82,7 +82,7 @@ Dalam kerangka ini, analisis dari sebuah paket dapat menulis fakta-fakta yang
dapat digunakan untuk menganalisis paket-paket lainnya yang meng-impor yang
pertama.
Misalnya, analisis `go vet` terhadap
-https://pkg.go.dev/pkg/log/[paket log]
+https://pkg.go.dev/pkg/log/[paket log^]
menentukan dan mencatat fakta bahwa `log.Printf` adalah sebuah pembungkus dari
`fmt.Printf`.
Kemudian `go vet` dapat memeriksa string format bergaya printf dalam
@@ -152,9 +152,8 @@ menandai secara kriptografi pernyataan dalam bentuk "modul M pada versi V
memiliki hash H."
Layanan _notary_ ini akan menerbitkan _hash_ yang telah disahkan yang dapat
di-_query_ dengan
-https://www.certificate-transparency.org/[Transparansi Sertifikat]
-http://static.usenix.org/event/sec09/tech/full_papers/crosby.pdf[tamper-proof
-log],
+https://www.certificate-transparency.org/[Transparansi Sertifikat^]
+https://static.usenix.org/event/sec09/tech/full_papers/crosby.pdf[tamper-proof log^],
supaya orang lain dapat menverifikasi bahwa notaris bekerja secara benar.
Catatan tersebut akan tersedia secara publik, seperti berkas "go.sum" global
yang dapat digunakan `go get` untuk autentikasi modul saat menambah atau
diff --git a/_content/blog/normalization/index.adoc b/_content/blog/normalization/index.adoc
index a49566b..8aec8eb 100644
--- a/_content/blog/normalization/index.adoc
+++ b/_content/blog/normalization/index.adoc
@@ -1,29 +1,29 @@
= Normalisasi teks dalam Go
-:author: Marcel van Lohuizen
-:date: 26 November 2013
+Marcel van Lohuizen
+26 November 2013
:toc:
== Pendahuluan
Pada
-link:/blog/strings[artikel]
+link:/blog/strings[artikel^]
sebelumnya kita telah membahas tentang string, byte, dan karakter dalam Go.
Saya telah bekerja dengan banyak paket-paket untuk pemrosesan teks
multibahasa untuk repositori teks Go.
Beberapa paket tersebut layak memiliki artikel sendiri yang terpisah, tetapi
sekarang saya ingin fokus pada
-https://godoc.org/code.google.com/p/go.text/unicode/norm[go text/unicode/norm]
+https://pkg.go.dev/code.google.com/p/go.text/unicode/norm[go text/unicode/norm^]
yang menangani normalisasi, topik yang disinggung dalam
-link:/blog/strings[artikel tentang string]
+link:/blog/strings[artikel tentang string^]
dan subjek dari artikel ini.
Normalisasi bekerja pada tingkat paling atas dari abstraksi bukan pada byte
mentah.
Untuk belajar tentang normalisasi,
-http://unicode.org/reports/tr15/[Annex 15 dari Standar Unicode]
+https://unicode.org/reports/tr15/[Annex 15 dari Standar Unicode^]
adalah bacaan yang bagus.
Artikel yang lebih awam yaitu
-http://en.wikipedia.org/wiki/Unicode_equivalence[halaman Wikipedia].
+https://en.wikipedia.org/wiki/Unicode_equivalence[halaman Wikipedia^].
Di sini kita fokus tentang bagaimana normalisasi bekerja dalam Go.
@@ -74,7 +74,7 @@ Seperti yang telah dijelaskan juga dalam artikel tentang string, Go tidak
menjamin bahwa karakter-karakter dalam sebuah string telah dinormalisasi.
Namun, paket go.text dapat mengompensasi hal tersebut.
Misalnya, paket
-https://godoc.org/code.google.com/p/go.text/collate[collate],
+https://pkg.go.dev/code.google.com/p/go.text/collate[collate^],
yang dapat mengurutkan string menurut bahasa tertentu, bekerja secara tepat
dengan string yang tidak dinormalisasi.
Paket-paket dalam go.text tidak selalu membutuhkan input yang telah
@@ -85,7 +85,7 @@ Normalisasi ada biayanya namun ia cepat, terutama untuk pemeriksaan dan
pencarian atau jika sebuah string bukanlah NFD atau NFC dan bisa dikonversi ke
NFD dengan melakukan dekomposisi tanpa mengubah urutan byte-byte.
Secara praktik,
-http://www.macchiato.com/unicode/nfc-faq#TOC-How-much-text-is-already-NFC-[99.98%]
+https://www.macchiato.com/unicode/nfc-faq#TOC-How-much-text-is-already-NFC-[99.98%^]
isi halaman HTML di web dalam bentuk NFC (bila mengikutkan _markup_,
nilai persentase akan lebih besar).
Sejauh ini umumnya NFC dapat di-dekomposisi ke NFD tanpa perlu mengubah urutan
@@ -178,7 +178,7 @@ Atau Anda bisa mengeluarkan teks sebagai NFC seperti yang kebanyakan orang
lakukan.
Untuk menulis teks sebagai NFC, gunakan paket
-https://godoc.org/code.google.com/p/go.text/unicode/norm[unicode/norm]
+https://pkg.go.dev/code.google.com/p/go.text/unicode/norm[unicode/norm^]
untuk membungkus `io.Writer`:
----
@@ -272,7 +272,7 @@ yang menghargai batasan karakter (seperti paket `go.text/search`.)
Perkakas lain yang disediakan oleh paket `norm` yang bisa membantu bekerja
dengan batasan karakter adalah iterator,
-https://godoc.org/code.google.com/p/go.text/unicode/norm#Iter[norm.Iter].
+https://pkg.go.dev/code.google.com/p/go.text/unicode/norm#Iter[norm.Iter^].
Ia mengiterasi karakter satu-per-satu dalam bentuk normal.
@@ -323,7 +323,7 @@ Tipe `norm.Properties` menyediakan akses ke informasi per-rune yang dibutuhkan
oleh paket tersebut, yang paling terkenal yaitu _Canonical Combining Class_
dan dekomposisi informasi.
Bacalah
-https://godoc.org/code.google.com/p/go.text/unicode/norm/#Properties[dokumentasi]
+https://pkg.go.dev/code.google.com/p/go.text/unicode/norm/#Properties[dokumentasi^]
tipe tersebut jika Anda ingin belajar lebih dalam.
@@ -370,4 +370,4 @@ waktu.
== Artikel terkait
-* link:/blogs/strings[String, byte, rune, dan karakter dalam Go]
+* link:/blogs/strings[String, byte, rune, dan karakter dalam Go^]
diff --git a/_content/blog/organizing-go-code/index.adoc b/_content/blog/organizing-go-code/index.adoc
index f273d0c..f14e197 100644
--- a/_content/blog/organizing-go-code/index.adoc
+++ b/_content/blog/organizing-go-code/index.adoc
@@ -17,7 +17,7 @@ kita, jadi perhatikanlah penamaan paket dan pengidentifikasi yang diekspor.
Nama dari paket menyediakan konteks bagi isinya.
Misalnya,
-https://golang.org/pkg/bytes/[paket bytes]
+https://pkg.go.dev/bytes/[paket bytes^]
pada pustaka standar mengekspor tipe `Buffer`.
Tanpa ada nama paket, nama `Buffer` itu sendiri tidak begitu deskriptif, namun
saat digabungkan dengan nama paket maknanya menjadi jelas: `bytes.Buffer`.
@@ -30,7 +30,9 @@ Saat kita menghabiskan waktu dengan membuat program, kita akan memahami
bagaimana bagian-bagian tersebut saling terhubung dan, oleh karena itu,
bagaimana nama mereka seharusnya.
Tidak perlu membatasi diri kita sendiri pada saat awal-awal.
-(https://golang.org/cmd/gofmt/[Perintah `gofmt`] memiliki opsi `-r` yang
+(
+https://golang.org/cmd/gofmt/[Perintah `gofmt`^]
+memiliki opsi `-r` yang
menyediakan pencarian dan penggantian secara sintaksis, membuat perubahan
dalam skala besar menjadi mudah.)
@@ -113,10 +115,10 @@ menyelesaikan pekerjaan dengan cepat.
Lihatlah pustaka standar Go sebagai panduan.
Beberapa dari paketnya sangat besar dan beberapa sangat kecil.
Misalnya,
-https://golang.org/pkg/net/http/[paket http]
+https://pkg.go.dev/net/http/[paket http^]
terdiri dari 17 berkas Go (tidak termasuk tes) dan mengekspor 109
pengidentifikasi, dan
-https://golang.org/pkg/hash/[paket hash]
+https://pkg.go.dev/hash/[paket hash^]
terdiri dari satu berkas yang mengekspor hanya tiga deklarasi.
Tidak ada aturan yang cepat dan baku, kedua pendekatan tersebut sesuai dengan
konteksnya.
@@ -126,7 +128,7 @@ Perintah-perintah yang kompleks mengandung banyak kode yang sedikit gunanya
di luar konteks dari _executable_, dan terkadang lebih simpel menyimpan
semuanya di satu tempat.
Misalnya, perkakas go lebih dari 12000 baris yang tersebar dalam
-https://golang.org/src/cmd/go/[34 berkas].
+https://golang.org/src/cmd/go/[34 berkas^].
==== Dokumentasikan kode kita
@@ -134,5 +136,5 @@ https://golang.org/src/cmd/go/[34 berkas].
Dokumentasi yang bagus adalah kualitas yang penting untuk kode yang berguna
dan mudah dipelihara.
Bacalah artikel
-link:/blog/godoc_documenting_go_code[Godoc: mendokumentasikan kode Go]
+link:/blog/godoc_documenting_go_code[Godoc: mendokumentasikan kode Go^]
untuk belajar bagaimana menulis dokumentasi kode yang bagus.
diff --git a/_content/blog/pipelines/index.adoc b/_content/blog/pipelines/index.adoc
index 4ef83d7..c646240 100644
--- a/_content/blog/pipelines/index.adoc
+++ b/_content/blog/pipelines/index.adoc
@@ -155,7 +155,7 @@ Pengiriman ke kanal yang telah ditutup akan menyebabkan _panic_, jadi sangat
penting untuk memastikan semua pengiriman telah selesai sebelum menutup kanal
_keluar_ tersebut.
Tipe
-https://golang.org/pkg/sync/#WaitGroup[sync.WaitGroup]
+https://golang.org/pkg/sync#WaitGroup[sync.WaitGroup^]
menyediakan cara sederhana untuk mengatur sinkronisasi seperti ini:
----
@@ -356,9 +356,8 @@ Mencatat semua perhitungan tersebut membutuhkan waktu dan bisa saja salah.
Kita memerlukan sebuah cara untuk memberitahu sejumlah goroutine, yang tidak
diketahui jumlahnya, untuk berhenti mengirim nilai ke tahap di hilir.
Pada Go, kita dapat melakukan hal ini dengan menutup kanal, karena
-link:/ref/spec#Receive_operator[operasi menerima pada kanal yang telah ditutup
-akan diproses langsung, menghasilkan nilai kosong dari tipe elemen dari
-kanal].
+link:/ref/spec#Receive_operator[operasi menerima pada kanal yang telah ditutup^]
+akan diproses langsung, menghasilkan nilai kosong dari tipe elemen dari kanal.
Hal ini berarti fungsi `main` dapat membersihkan semua pengirim yang pampat
cukup dengan menutup kanal `done`.
@@ -502,7 +501,7 @@ func main() {
Fungsi `MD5All` adalah fokus dari diskusi kita sekarang.
Dalam berkas
-link:/blog/pipelines/serial.go[`serial.go`],
+link:/blog/pipelines/serial.go[`serial.go`^],
implementasinya tidak menggunakan konkurensi dan hanya membaca dan melakukan
_sum_ dari setiap berkas saat membaca isi direktori.
@@ -538,7 +537,7 @@ func MD5All(root string) (map[string][md5.Size]byte, error) {
=== Pembacaan secara paralel
Dalam
-link:/blog/pipelines/parallel.go[`parallel.go`],
+link:/blog/pipelines/parallel.go[`parallel.go`^],
kita memecah `MD5All` menjadi _pipeline_ dengan dua tahap.
Tahap pertama, `sumFiles`, membaca isi direktori, membaca isi berkas dalam
sebuah goroutine, dan mengirim hasilnya ke sebuah kanal dengan nilai dari tipe
@@ -637,7 +636,7 @@ func MD5All(root string) (map[string][md5.Size]byte, error) {
=== Membatasi paralelisme
Implementasi `MD5All` dalam
-link:/blog/pipelines/parallel.go[parallel.go]
+link:/blog/pipelines/parallel.go[parallel.go^]
menjalankan sebuah goroutine baru untuk setiap berkas.
Dalam sebuah direktori dengan banyak berkas, hal ini bisa mengakibatkan
alokasi memori yang lebih banyak daripada memori pada sistem.
@@ -645,7 +644,7 @@ alokasi memori yang lebih banyak daripada memori pada sistem.
Kita dapat mengurangi alokasi ini dengan membatasi jumlah berkas yang dibaca
secara paralel.
Dalam
-link:/blog/pipelines/bounded.go[`bounded.go`],
+link:/blog/pipelines/bounded.go[`bounded.go`^],
hal ini dilakukan dengan membuat sejumlah `n` goroutine untuk membaca berkas.
Sekarang _pipeline_ kita memiliki tiga tahap: baca isi direktori, baca dan
_digest_ berkas, dan kumpulkan hasil _digest_.
@@ -762,9 +761,9 @@ Bacaan lebih lanjut:
(https://www.youtube.com/watch?v=f6kdp27TYZs[video^]) mempresentasikan dasar
dari konkurensi Go dan cara pakainya.
* https://blog.golang.org/advanced-go-concurrency-patterns[Pola konkurensi Go lanjut^]
- (http://www.youtube.com/watch?v=QDDwwePbDtw[video^]) menelaah penggunaan
+ (https://www.youtube.com/watch?v=QDDwwePbDtw[video^]) menelaah penggunaan
yang lebih kompleks dari konkurensi pada Go, terutama `select`.
* Makalah Douglas McIlroy
- https://swtch.com/~rsc/thread/squint.pdf["Squinting at Power Series"]
+ https://swtch.com/~rsc/thread/squint.pdf["Squinting at Power Series"^]
memperlihatkan bagaimana konkurensi seperti Go menyediakan dukungan yang
elegan untuk perhitungan yang kompleks.
diff --git a/_content/blog/pkg.go.dev-2020/index.adoc b/_content/blog/pkg.go.dev-2020/index.adoc
index dbcfddc..c398f32 100644
--- a/_content/blog/pkg.go.dev-2020/index.adoc
+++ b/_content/blog/pkg.go.dev-2020/index.adoc
@@ -5,20 +5,20 @@
== Pendahuluan
Di tahun 2019, kami meluncurkan
-https://go.dev/[go.dev],
+https://go.dev/[go.dev^],
sebuah situs baru untuk para pengembang Go.
Sebagai bagian dari situs tersebut, kami juga meluncurkan
-https://pkg.go.dev/[pkg.go.dev],
+https://pkg.go.dev/[pkg.go.dev^],
pusat sumber informasi dari modul dan paket Go.
Seperti halnya
-https://godoc.org/[godoc.org],
+https://godoc.org/[godoc.org^],
pkg.go.dev melayani dokumentasi Go.
Namun, pkg.go.dev dapat membaca modul dan memiliki informasi tentang
versi-versi sebelumnya dari sebuah paket!
Di tahun ini, kami akan menambahkan beberapa fitur ke
-https://pkg.go.dev/[pkg.go.dev]
+https://pkg.go.dev/[pkg.go.dev^]
untuk membantu pengguna supaya lebih baik memahami dependensi mereka dan dalam
membuat keputusan terhadap pustaka yang akan mereka impor.
@@ -27,33 +27,33 @@ membuat keputusan terhadap pustaka yang akan mereka impor.
Untuk meminimalkan kebingungan tentang situs mana yang digunakan, kami
berencana memindahkan lalu lintas dari
-https://godoc.org/[godoc.org]
+https://godoc.org/[godoc.org^]
ke halaman yang berkaitan di
-https://pkg.go.dev/[pkg.go.dev].
+https://pkg.go.dev/[pkg.go.dev^].
Kami butuh bantuan Anda untuk memastikan bahwa pkg.go.dev memenuhi semua
kebutuhan pengguna.
Kami mendorong semua orang supaya mulai menggunakan pkg.go.dev hari ini untuk
semua kebutuhan mereka dan memberikan masukan.
Masukan Anda akan membantu rencana transisi kami, dengan tujuan membuat
-https://pkg.go.dev/[pkg.go.dev]
+https://pkg.go.dev/[pkg.go.dev^]
sebagai sumber informasi dan dokumentasi utama untuk paket dan modul.
Kami yakin ada banyak fitur yang ingin Anda lihat di pkg.go.dev, dan kami
ingin mengetahui apa saja fitur-fitur tersebut dari Anda!
Anda dapat membagikan masukan dengan kami lewat kanal berikut:
-* https://golang.org/s/discovery-feedback[Tulisan di pelacak isu Go]
+* https://golang.org/s/discovery-feedback[Tulisan di pelacak isu Go^]
* Surel ke
mailto:go-discovery-feedback@google.com[go-discovery-feedback@google.com]
* Klik "Share Feedback" atau "Report an Issue" pada bagian bawah go.dev
Sebagai bagian dari transisi ini, kami juga sedang mendiskusikan rencana untuk
mengakses
-https://pkg.go.dev/[pkg.go.dev]
+https://pkg.go.dev/[pkg.go.dev^]
lewat API.
Kami akan melaporkan pembaruan lewat
-https://golang.org/s/discovery-updates[Go isu 33654].
+https://golang.org/s/discovery-updates[Go isu 33654^].
== Pertanyaan yang sering diajukan
@@ -67,14 +67,14 @@ sini.
=== Paket saya tidak muncul di pkg.go.dev! Bagaimana cara menambahkan?
Kami memonitor
-https://index.golang.org/index[indeks dari Go Modul]
+https://index.golang.org/index[indeks dari Go Modul^]
setiap saat untuk mencari paket yang baru untuk ditambahkan ke
-https://pkg.go.dev/[pkg.go.dev].
+https://pkg.go.dev/[pkg.go.dev^].
Jika Anda tidak menemukan sebuah paket dalam pkg.go.dev, Anda dapat
menambahkannya dengan mengambil versi modul lewat
-https://proxy.golang.org/[proxy.golang.org].
+https://proxy.golang.org/[proxy.golang.org^].
Lihat halaman
-https://go.dev/about[go.dev/about]
+https://go.dev/about[go.dev/about^]
untuk instruksi lebih lanjut.
@@ -89,17 +89,17 @@ Sejak peluncuran di bulan November, kami telah melakukan beberapa perbaikan
berikut:
* Pembaruan terhadap
- https://pkg.go.dev/license-policy[polis lisensi]
+ https://pkg.go.dev/license-policy[polis lisensi^]
untuk mengikutkan daftar lisensi yang kami periksa dan kenali
* Bekerja sama dengan tim
- https://github.com/google/licensecheck[licensecheck]
+ https://github.com/google/licensecheck[licensecheck^]
untuk meningkatkan deteksi hak cipta
* Memantapkan proses peninjauan manual untuk kasus-kasus tertentu
Polis lisensi kami ada di
-https://pkg.go.dev/license-policy[pkg.go.dev/license-policy].
+https://pkg.go.dev/license-policy[pkg.go.dev/license-policy^].
Jika Anda menemukan masalah, silakan
-https://golang.org/x/discovery-feedback[buka isu di halaman pelacak isu Go],
+https://golang.org/x/discovery-feedback[buka isu di halaman pelacak isu Go^],
atau kirim surel ke
mailto:go-discovery-feedback@google.com[go-discovery-feedback@google.com]
supaya kami dapat bekerja langsung dengan Anda!
@@ -113,7 +113,7 @@ Kami ingin membantu mencapai kebutuhan tersebut, namun saat ini kami belum
memahami sepenuhnya kebutuhan yang Anda inginkan.
Kami juga telah mendengar masukan dari para pengguna bahwa menjalankan server
-https://godoc.org/[godoc.org]
+https://godoc.org/[godoc.org^]
ternyata lebih kompleks dari yang dibayangkan, karena ia dirancang untuk
melayani publik dengan skala besar bukan hanya untuk internal perusahaan.
Kami percaya bahwa server pkg.go.dev yang sekarang memiliki masalah yang sama.
@@ -123,12 +123,12 @@ untuk digunakan dengan sumber kode pribadi, bukan dengan kompleksitas
menjalankan basis kode berskala internet seperti
pkg.go.dev.
Selain melayani dokumentasi, server yang baru juga dapat melayani informasi
-https://pkg.go.dev/golang.org/x/tools/cmd/goimports?tab=doc[goimports]
+https://pkg.go.dev/golang.org/x/tools/cmd/goimports?tab=doc[goimports^]
dan
-https://pkg.go.dev/golang.org/x/tools/gopls[gopls].
+https://pkg.go.dev/golang.org/x/tools/gopls[gopls^].
Jika Anda ingin menjalankan server seperti itu, silakan isi
-https://google.qualtrics.com/jfe/form/SV_6FHmaLveae6d8Bn[survei berikut]
+https://google.qualtrics.com/jfe/form/SV_6FHmaLveae6d8Bn[survei berikut^]
untuk membantu kami memahami kebutuhan Anda.
Survei ini akan dibuka sampai 1 Maret, 2020.
diff --git a/_content/blog/playground/index.adoc b/_content/blog/playground/index.adoc
index 494a5b2..dc94e80 100644
--- a/_content/blog/playground/index.adoc
+++ b/_content/blog/playground/index.adoc
@@ -5,24 +5,24 @@
== Pendahuluan
Pada bulan September 2010 kami
-link:/blog/introducing-go-playground[memperkenalkan Go Playground],
+link:/blog/introducing-go-playground[memperkenalkan Go Playground^],
sebuah layanan web yang mengompilasi dan mengeksekusi kode Go dan
menampilkan keluarannya.
Jika Anda adalah pemrogram Go maka kemungkinan Anda sudah pernah menggunakan
playground lewat
-https://play.golang.org[Go Playground]
+https://play.golang.org[Go Playground^]
secara langsung, melakukan
-https://tour.golang-id.org[Tur Go],
+https://tour.golang-id.org[Tur Go^],
atau menjalankan
-https://golang.org/pkg/strings/#pkg-examples[contoh]
+https://pkg.go.dev/strings#pkg-examples[contoh^]
dari dokumentasi Go.
Anda mungkin juga pernah pakai lewat tombol "Run" dalam salah satu presentasi
di
-https://talks.golang.org/[talks.golang.org]
+https://talks.golang.org/[talks.golang.org^]
atau artikel dalam situs ini (seperti artikel tentang
-link:/blog/strings[String]).
+link:/blog/strings[String^]).
Dalam artikel ini kita akan melihat bagaimana playground diimplementasikan dan
diintegrasikan dengan layanan-layanan tersebut.
@@ -43,7 +43,7 @@ Layanan playground memiliki tiga bagian:
(atau kesalahan kompilasi) sebagai respons RPC.
* Sebuah _front-end_ yang berjalan di
- https://cloud.google.com/appengine/docs/go/[Google App Engine].
+ https://cloud.google.com/appengine/docs/go/[Google App Engine^].
Ia menerima permintaan HTTP dari klien dan membuat permintaan RPC ke
_back-end_.
Ia juga melakukan beberapa _caching_.
@@ -62,7 +62,8 @@ waktu, jaringan, dan sistem berkas.
Untuk mengisolasi program pengguna dari infrastruktur Google, back-end
menjalankan program dengan
-https://developers.google.com/native-client/[Native Client] (atau "NaCl"),
+https://developers.google.com/native-client/[Native Client^]
+(atau "NaCl"),
sebuah teknologi yang dikembangkan oleh Google untuk membolehkan eksekusi
program x86 dengan aman di dalam peramban.
Back-end menggunakan versi khusus dari perkakas `go` yang menghasilkan program
@@ -70,7 +71,8 @@ NaCl yang dapat dieksekusi.
(Perkakas khusus ini telah digabungkan ke Go 1.3.
Untuk belajar lebih lanjut, bacalah
-https://golang.org/s/go13nacl[dokumentasi rancangan].)
+https://golang.org/s/go13nacl[dokumentasi rancangan^]
+.)
NaCl membatasi jumlah CPU dan RAM yang dikonsumsi program, dan mencegah
program dari mengakses jaringan atau sistem berkas.
@@ -88,9 +90,9 @@ Waktu sekarang di-set baku ke 10 November 2009, `time.Sleep` tidak memiliki
efek, dan kebanyakan fungsi dalam paket `os` dan `net` dimatikan dengan
mengembalikan eror `EINVALID`.
-Setahun yang lalu kami
-https://groups.google.com/d/msg/golang-nuts/JBsCrDEVyVE/30MaQsiQcWoJ[mengimplementasikan
-waktu palsu] dalam playground, supaya program yang memanggil `Sleep` dapat
+Setahun yang lalu kami mengimplementasikan
+https://groups.google.com/d/msg/golang-nuts/JBsCrDEVyVE/30MaQsiQcWoJ[waktu palsu^]
+dalam playground, supaya program yang memanggil `Sleep` dapat
bekerja dengan benar.
Pembaruan terakhir dari playground memperkenalkan jaringan palsu dan sistem
berkas palsu, membuat perkakas playground hampir sama dengan perkakas Go yang
@@ -111,11 +113,12 @@ lebih dapat diprediksi dan menjaga kita dari serangan _denial of service_.
Namun batasan ini menjadi bermasalah saat kode yang dieksekusi menggunakan
fungsi-fungsi waktu.
Wicara
-https://talks.golang.org/2012/concurrency.slide[Pola Konkurensi Go]
+https://talks.golang.org/2012/concurrency.slide[Pola Konkurensi Go^]
mendemonstrasikan konkurensi dengan contoh-contoh yang menggunakan fungsi
waktu seperti
-https://golang.org/pkg/time/#Sleep[`time.Sleep`] dan
-https://golang.org/pkg/time/#After[`time.After`].
+https://pkg.go.dev/time#Sleep[`time.Sleep`^]
+dan
+https://pkg.go.dev/time#After[`time.After`^].
Bila dijalankan pada versi playground yang lama, maka `Sleep` pada program
tidak berpengaruh dan perilakunya akan aneh (dan terkadang salah).
@@ -149,9 +152,9 @@ Eksekusi terus berjalan dan program percaya bahwa waktu telah lewat, pada
kenyataannya waktu tidur berjalan secara instan.
Perubahan dalam _scheduler_ ini dapat ditemukan dalam
-https://golang.org/cl/73110043[proc.c]
+https://golang.org/cl/73110043[proc.c^]
dan
-https://golang.org/cl/73110043[time.goc].
+https://golang.org/cl/73110043[time.goc^].
Pemalsuan waktu memperbaiki beberapa isu dari penggunaan sumber daya pada
back-end, tetapi bagaimana dengan keluaran program?
@@ -188,8 +191,7 @@ tepat, sehingga keluaran muncul seperti program berjalan secara benar di
lokal komputer Anda.
Paket _runtime_ pada playground menyediakan sebuah fungsi
-https://github.com/golang/go/blob/go1.3/src/pkg/runtime/sys_nacl_amd64p32.s#L54[`write`
-khusus]
+https://github.com/golang/go/blob/go1.3/src/pkg/runtime/sys_nacl_amd64p32.s#L54[`write` khusus^]
yang mengikutkan sebuah "playback header" sebelum setiap penulisan.
Playback header tersebut berisi sebuah string, waktu sekarang, dan panjang
data yang ditulis.
@@ -275,7 +277,7 @@ selesai setiap perubahan pada sistem berkas akan hilang.
Ada juga sebuah perlengkapan yang memuat berkas zip ke dalam sistem berkas
pada saat init (lihat
-https://github.com/golang/go/blob/go1.3/src/pkg/syscall/unzip_nacl.go[unzip_nacl.go]).
+https://github.com/golang/go/blob/go1.3/src/pkg/syscall/unzip_nacl.go[unzip_nacl.go^]).
Sejauh ini kita hanya menggunakan fasilitas unzip untuk menyediakan
berkas-berkas data yang dibutuhkan untuk menjalankan pustaka standar
pengujian, tetapi kami ingin menyediakan program playground dengan sekumpulan
@@ -283,19 +285,18 @@ berkas yang dapat digunakan dalam contoh-contoh dokumentasi, artikel blog, dan
tur Go.
Implementasinya dapat ditemukan dalam berkas
-https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go[fs_nacl.go]
+https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go[fs_nacl.go^]
dan
-https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go[fd_nacl.go]
+https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go[fd_nacl.go^]
(yang dibangun ke paket `syscall` hanya bila `GOOS` di set ke `nacl`).
Sistem berkas itu sendiri direpresentasikan oleh
-https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go#L26[struct
-fsys],
+https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go#L26[struct fsys^],
yang mana sebuah instansi global (bernama `fs`) dibuat saat inisiasi.
Beragam fungsi-fungsi berkas beroperasi terhadap `fs` bukan melakukan
pemanggilan sistem secara langsung.
Misalnya, berikut fungsi
-https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go#L473[syscall.Open]:
+https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go#L473[syscall.Open^]:
----
func Open(path string, openmode int, perm uint32) (fd int, err error) {
@@ -310,17 +311,17 @@ func Open(path string, openmode int, perm uint32) (fd int, err error) {
----
Penanda berkas (_file descriptor_) dilacak oleh sebuah slice global bernama
-https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L17[`files`].
+https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L17[`files`^].
Setiap penanda berkas berkorespondensi dengan sebuah
-https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L23[`file`]
+https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L23[`file`^]
dan setiap `file` menyediakan nilai yang mengimplementasikan interface
-https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L30[`fileImpl`].
+https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L30[`fileImpl`^].
Ada beberapa implementasi dari interface tersebut:
* Berkas dan perangkat biasa (seperti `/dev/random`) direpresentasikan oleh
-https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go#L58[`fsysFile`],
+https://github.com/golang/go/blob/master/src/syscall/fs_nacl.go#L58[`fsysFile`^],
* Standar masukan, keluaran, dan eror adalah instansi dari
-https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L216[`naclFile`],
+https://github.com/golang/go/blob/master/src/syscall/fd_nacl.go#L216[`naclFile`^],
yang menggunakan pemanggilan sistem untuk berinteraksi dengan berkas yang
sebenarnya (hal ini adalah satu-satunya cara program berinteraksi dengan dunia
luar),
@@ -377,9 +378,9 @@ Pemalsuan jaringan harus dapat menyimulasikan _timeout_ baca dan tulis,
tipe-tipe alamat dan protokol yang berbeda, dan seterusnya.
Implementasi tersebut dapat ditemukan dalam
-https://github.com/golang/go/blob/master/src/syscall/net_nacl.go[net_nacl.go].
+https://github.com/golang/go/blob/master/src/syscall/net_nacl.go[net_nacl.go^].
Bagian awal yang bagus untuk dibaca yaitu
-https://github.com/golang/go/blob/master/src/syscall/net_nacl.go#L461[netFile],
+https://github.com/golang/go/blob/master/src/syscall/net_nacl.go#L461[netFile^],
implementasi dari jaringan socket dari interface `fileImpl`.
@@ -390,19 +391,19 @@ Ia menerima permintaan HTTP dari klien, membuat permintaan RPC ke back-end,
dan melakukan semacam penyimpanan sementara (_caching_).
Front-end melayani HTTP dengan sebuah _handler_ di
-https://golang.org/compile.
+https://golang.org/compile[golang.org/compile^].
Handler tersebut menerima permintaan POST dengan bagian `body` (program Go
yang akan dijalankan) dan kolom `version` opsional (untuk klien pada umumnya
nilainya "2").
Saat front-end menerima permintaan kompilasi, pertama ia akan memeriksa
-https://developers.google.com/appengine/docs/memcache/[memcache]
+https://developers.google.com/appengine/docs/memcache/[memcache^]
untuk melihat apakah ia pernah menyimpan hasil kompilasi dari kode yang sama
sebelumnya.
Jika ditemukan, ia akan mengembalikan respons yang tersimpan tersebut.
_Cache_ tersebut mencegah program yang umum seperti yang dapat kita temukan
pada
-https://golang.org/[halaman depan Go]
+https://golang.org/[halaman depan Go^]
dari menghabiskan sumber daya pada back-end.
Jika tidak ada respons yang tersimpan, front-end melakukan pemanggilan RPC ke
back-end, menyimpan respons ke dalam memcache, membaca even-event, dan
@@ -417,44 +418,44 @@ untuk menyiapkan antarmuka pengguna (kotak kode dan keluaran, tombol "Run",
dan lainnya) dan berkomunikasi dengan front-end playground.
Implementasinya ada dalam berkas
-https://github.com/golang/tools/blob/master/godoc/static/playground.js[playground.js]
+https://github.com/golang/tools/blob/master/godoc/static/playground.js[playground.js^]
dalam repositori `go.tools`, yang dapat diimpor dari paket
-https://godoc.org/golang.org/x/tools/godoc/static[`golang.org/x/tools/godoc/static`].
+https://pkg.go.dev/golang.org/x/tools/godoc/static[`golang.org/x/tools/godoc/static`^].
Beberapa kodenya cukup bersih dan beberapa cukup kasar karena ia adalah hasil
gabungan dari beberapa implementasi dari kode klien.
Fungsi
-https://github.com/golang/tools/blob/master/godoc/static/playground.js#L227[playground]
+https://github.com/golang/tools/blob/master/godoc/static/playground.js#L227[playground^]
membaca beberapa elemen HTML dan mengubahnya menjadi _widget_ playground yang
interaktif.
Anda sebaiknya menggunakan fungsi ini jika Anda ingin menempatkan playground
pada situs Anda (lihat `Klien lain` di bawah).
Interface
-https://github.com/golang/tools/blob/master/godoc/static/playground.js#L6[`Transport`]
+https://github.com/golang/tools/blob/master/godoc/static/playground.js#L6[`Transport`^]
(tidak secara formal terdefinisi)
mengabstraksi antarmuka pengguna untuk berkomunikasi ke front-end web.
-https://github.com/golang/tools/blob/master/godoc/static/playground.js#L43[HTTPTransport]
+https://github.com/golang/tools/blob/master/godoc/static/playground.js#L43[HTTPTransport^]
adalah sebuah implementasi dari `Transport` menggunakan protokol HTTP seperti
yang dijelaskan di atas.
-https://github.com/golang/tools/blob/master/godoc/static/playground.js#L115[SocketTransport]
+https://github.com/golang/tools/blob/master/godoc/static/playground.js#L115[SocketTransport^]
adalah implementasi menggunakan WebSocket (lihat "Eksekusi luring" di bawah).
Untuk memenuhi
-https://en.wikipedia.org/wiki/Same-origin_policy[aturan same-origin],
+https://en.wikipedia.org/wiki/Same-origin_policy[aturan same-origin^],
beberapa server web (godoc, misalnya) mengirim permintaan ke `/compile` lewat
layanan proxy playground di https://golang.org/compile.
Paket
-https://godoc.org/golang.org/x/tools/playground[golang.org/x/tools]
+https://pkg.go.dev/golang.org/x/tools/playground[golang.org/x/tools^]
membantu melakukan hal ini.
== Eksekusi luring
Baik
-https://tour.golang-id.org/[tur Go]
+https://tour.golang-id.org/[tur Go^]
dan
-https://godoc.org/golang.org/x/tools/present[perkakas Present]
+https://pkg.go.dev/golang.org/x/tools/present[perkakas Present^]
dapat berjalan secara luring.
Hal ini bagus untuk yang memiliki koneksi internet yang terbatas atau untuk
presentasi yang tidak dapat (dan _sebaiknya_ tidak) bergantung pada koneksi
@@ -466,16 +467,17 @@ Back-end menggunakan perkakas Go biasa tanpa ada modifikasi yang disebutkan di
atas dan menggunakan WebSocket untuk berkomunikasi dengan klien.
Implementasi WebSocket untuk back-end dapat ditemukan dalam paket
-https://godoc.org/golang.org/x/tools/playground/socket[golang.org/x/tools/playground/socket].
+https://pkg.go.dev/golang.org/x/tools/playground/socket[golang.org/x/tools/playground/socket^].
Wicara
-https://talks.golang.org/2012/insidepresent.slide#1[Inside Present]
+https://talks.golang.org/2012/insidepresent.slide#1[Inside Present^]
mendiskusikan kode ini secara rinci.
== Klien lain
Layanan playground digunakan oleh banyak proyek Go (
-https://gobyexample.com/[Go by Example] adalah salah satunya)
+https://gobyexample.com/[Go by Example^]
+adalah salah satunya)
dan kami suka bila Anda menggunakannya pada situs Anda sendiri.
Apa yang kami harapkan yaitu supaya Anda
mailto:golang-dev@googlegroups.com[kontak kami terlebih dahulu],
@@ -496,11 +498,11 @@ Dengan dukungan Native Client yang dijadwalkan dalam Go 1.3, kami berharap
dapat melihat apa yang komunitas dapat lakukan dengannya.
_Artikel ini adalah bagian ke 12 dari_
-https://blog.gopheracademy.com/go-advent-2013[Go Advent Calendar]
+https://blog.gopheracademy.com/go-advent-2013[Go Advent Calendar^]
_sebuah kumpulan artikel blog harian sampai Desember._
== Artikel terkait
-* link:/blog/learn-go-from-your-browser[Belajar Go lewat peramban Anda]
-* link:/blog/introducing-go-playground[Memperkenalkan Go Playground]
+* link:/blog/learn-go-from-your-browser[Belajar Go lewat peramban Anda^]
+* link:/blog/introducing-go-playground[Memperkenalkan Go Playground^]
diff --git a/_content/blog/profiling-go-programs/index.adoc b/_content/blog/profiling-go-programs/index.adoc
index 9181eae..2c84258 100644
--- a/_content/blog/profiling-go-programs/index.adoc
+++ b/_content/blog/profiling-go-programs/index.adoc
@@ -6,8 +6,7 @@ _Diperbarui oleh Shenghou Ma, Mei 2013_
Pada pertemuan _Scala Days_ 2011, Robert Hundt mempresentasikan sebuah makalah
berjudul
-http://research.google.com/pubs/pub37122.html[Loop Recognition in
-C++/Java/Go/Scala].
+https://research.google.com/pubs/pub37122.html[Loop Recognition in C++/Java/Go/Scala^].
Makalah tersebut mengimplementasikan algoritme pencarian pengulangan
(_loop finding_) khusus,
yang biasa digunakan dalam analisis alur pada sebuah _compiler_, dalam
@@ -60,7 +59,7 @@ done
----
Kita telah mengambil
-https://github.com/hundt98847/multi-language-bench[program benchmark dari Hundt]
+https://github.com/hundt98847/multi-language-bench[program benchmark dari Hundt^]
dalam C++ dan Go, menggabungkan setiap sumber kode dalam sebuah sumber berkas
tersendiri dan menghapus semua keluaran kecuali sebuah baris.
Kita akan ukur waktu program menggunakan utilitas `time` pada Linux dengan
@@ -97,7 +96,7 @@ tool pprof", bukan mengulangi hasil dari makalah.)
Untuk mulai men-_tuning_ program Go, kita harus menyalakan profil.
Seandainya kode tersebut ditulis menggunakan fungsi _benchmark_ dari
-https://golang.org/pkg/testing/[paket Go `testing`],
+https://pkg.go.dev/testing[paket Go `testing`^],
kita dapat menggunakan opsi standar dari `gotest` yaitu `-cpuprofile` dan
`-memprofile`.
Dalam program seperti ini, kita harus mengimpor `runtime/pprof` dan
@@ -120,13 +119,13 @@ func main() {
----
Kode yang baru mendefinisikan sebuah opsi `cpuprofile`, memanggil
-https://golang.org/pkg/flag/[pustaka Go `flag`]
+https://pkg.go.dev/flag[pustaka Go `flag`^]
untuk memindai opsi pada baris perintah saat program dijalankan, dan kemudian,
jika opsi `cpuprofile` telah di-set pada baris perintah,
-https://golang.org/pkg/runtime/pprof/#StartCPUProfile[jalankan profil CPU]
+https://pkg.go.dev/runtime/pprof#StartCPUProfile[jalankan profil CPU^]
yang kemudian disimpan ke dalam berkas yang ditentukan.
Fungsi profil (_profiler_) tersebut butuh memanggil
-https://golang.org/pkg/runtime/pprof/#StopCPUProfile[StopCPUProfile]
+https://pkg.go.dev/runtime/pprof#StopCPUProfile[StopCPUProfile^]
untuk memastikan penulisan ke berkas terjadi sepenuhnya, sebelum program
berhenti;
kita menggunakan `defer` untuk memastikan hal tersebut terjadi saat `main`
@@ -146,7 +145,7 @@ Welcome to pprof! For help, type 'help'.
----
Program "go tool pprof" adalah varian dari
-https://github.com/gperftools/gperftools[Google pprof C++ profiler].
+https://github.com/gperftools/gperftools[Google pprof C++ profiler^].
Perintah yang paling penting yaitu `topN`, yang menampilkan `N` sampel teratas
dalam profil:
@@ -212,14 +211,15 @@ dan memuatnya lewat peramban.
(Terdapat juga perintah `gv` yang membuat berkas PostScript dan membukanya
menggunakan Ghostview.
Untuk kedua perintah tersebut, Anda butuh memasang program
-http://www.graphviz.org/[graphviz].)
+https://www.graphviz.org/[graphviz^]
+.)
----
(pprof) web
----
Potongan kecil dari
-https://rawgit.com/rsc/benchgraffiti/master/havlak/havlak1.svg[grafik]
+https://rawgit.com/rsc/benchgraffiti/master/havlak/havlak1.svg[grafik^]
berbentuk seperti ini:
image:/blog/profiling-go-programs/profiling-go-programs_havlak1a-75.png[,650]
@@ -285,9 +285,9 @@ _assembly_ bukan menampilkan daftar sumber kode;
bila jumlah sampel cukup perintah tersebut dapat membantu Anda melihat
instruksi mana yang memakan biaya.
Perintah `weblist` menggabungkan kedua mode tersebut: ia memperlihatkan
-https://rawgit.com/rsc/benchgraffiti/master/havlak/havlak1.html[daftar sumber
-kode dan pada saat sebuah baris di klik ia akan menampilkan _assembly_ dari
-baris tersebut].
+https://rawgit.com/rsc/benchgraffiti/master/havlak/havlak1.html[daftar sumber kode^]
+dan pada saat sebuah baris di klik ia akan menampilkan _assembly_ dari
+baris tersebut.
Secara kita telah mengetahui bahwa waktu program banyak dihabiskan untuk
pencarian pada `map` yang diimplementasikan oleh fungsi hash, kita akan
@@ -316,7 +316,7 @@ $
----
(Lihat
-https://github.com/rsc/benchgraffiti/commit/58ac27bcac3ffb553c29d0b3fb64745c91c95948[perbedaan antara `havlak1` dan `havlak2`])
+https://github.com/rsc/benchgraffiti/commit/58ac27bcac3ffb553c29d0b3fb64745c91c95948[perbedaan antara `havlak1` dan `havlak2`^])
Kita jalankan _profiler_ kembali untuk memastikan `main.DFS` tidak lagi
menghabiskan banyak waktu saat dijalankan:
@@ -376,7 +376,7 @@ $
----
(Lihat
-https://github.com/rsc/benchgraffiti/commit/b78dac106bea1eb3be6bb3ca5dba57c130268232[perubahan dari `havlak2`])
+https://github.com/rsc/benchgraffiti/commit/b78dac106bea1eb3be6bb3ca5dba57c130268232[perubahan dari `havlak2`^])
Kita gunakan "go tool pprof" dengan cara yang sama.
Sekarang sampel-sampel tersebut berisi alokasi memori, bukan waktu penggunaan
@@ -501,8 +501,7 @@ $
----
(Lihat
-https://github.com/rsc/benchgraffiti/commit/245d899f7b1a33b0c8148a4cd147cb3de5228c8a[perubahan
-untuk `havlak3`])
+https://github.com/rsc/benchgraffiti/commit/245d899f7b1a33b0c8148a4cd147cb3de5228c8a[perubahan untuk `havlak3`^])
Sekarang program kita 2.11x lebih cepat dari semula.
Mari kita lihat profil CPU sekali lagi.
@@ -664,8 +663,7 @@ $
----
(Lihat
-https://github.com/rsc/benchgraffiti/commit/2d41d6d16286b8146a3f697dd4074deac60d12a4[perubahan
-untuk `havlak4`])
+https://github.com/rsc/benchgraffiti/commit/2d41d6d16286b8146a3f697dd4074deac60d12a4[perubahan untuk `havlak4`^])
Ada banyak lagi yang dapat kita lakukan untuk membersihkan program dan
membuatnya lebih cepat, tetapi tidak ada lagi yang membutuhkan teknik profil
@@ -676,8 +674,7 @@ dengan "node pool" terpisah yang dibangkitkan selama berjalan.
Hal yang sama, penyimpanan "loop graph" dapat dipakai ulang pada setiap
iterasi bukan dengan mengalokasikan kembali.
Selain perubahan kinerja,
-https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.go[versi
-terakhir]
+https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.go[versi terakhir^]
ditulis menggunakan gaya idiomatis Go, menggunakan struktur data dan method.
Perubahan kode hanya memiliki efek minor pada _run-time_: algoritme dan
batasan-batasannya tidak berubah.
@@ -710,8 +707,7 @@ Tentu saja, sudah tidak adil lagi membandingkan program Go dengan program C++
yang aslinya, yang menggunakan struktur data yang tidak efisien seperti `set`
yang mana `vector` sebenarnya lebih cocok.
Untuk pemeriksaan, kami menerjemahkan program Go yang terakhir ke
-https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.cc[kode C++
-yang sama].
+https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.cc[kode C++ yang sama^].
Waktu eksekusi mirip dengan program Go:
----
@@ -735,9 +731,9 @@ $
----
(Lihat
-https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.cc[havlak6.cc]
+https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.cc[havlak6.cc^]
dan
-https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.go[havlak6.go]
+https://github.com/rsc/benchgraffiti/blob/master/havlak/havlak6.go[havlak6.go^]
)
Hasil dari sebuah _benchmark_ sama bagusnya dengan program yang diukur.
@@ -750,12 +746,12 @@ _garbage_ dihasilkan dalam pengulangan.
Sumber kode program, binari-binari Linux x86-64, dan profil-profil yang
digunakan untuk menulis artikel ini tersedia di
-https://github.com/rsc/benchgraffiti/[proyek benchgraffiti di Github].
+https://github.com/rsc/benchgraffiti/[proyek benchgraffiti di Github^].
Seperti yang telah disebutkan juga di atas,
-https://golang.org/cmd/go/#Test_packages[`go test`]
+https://pkg.go.dev/cmd/go#hdr-Test_packages[`go test`^]
sudah mengikutkan kedua opsi profil tersebut: definisikan sebuah
-https://golang.org/pkg/testing/[fungsi benchmark]
+https://pkg.go.dev/testing[fungsi benchmark^]
dan ia sudah siap digunakan.
Terdapat juga standar HTTP interface untuk mendapatkan data profil.
Dalam sebuah server HTTP, menambahkan
diff --git a/_content/blog/publishing-go-modules/index.adoc b/_content/blog/publishing-go-modules/index.adoc
index 3189f64..8a48fe1 100644
--- a/_content/blog/publishing-go-modules/index.adoc
+++ b/_content/blog/publishing-go-modules/index.adoc
@@ -17,9 +17,10 @@ Jika Anda ingin mengembangkan modul untuk v2, lihat
link:/blog/v2-go-modules[Go Modul: v2 dan Seterusnya].
Artikel ini menggunakan
-https://git-scm.com/[Git] sebagai contoh.
-https://www.mercurial-scm.org/[Mercurial],
-http://wiki.bazaar.canonical.com/[Bazaar],
+https://git-scm.com/[Git^]
+sebagai contoh.
+https://www.mercurial-scm.org/[Mercurial^],
+https://wiki.bazaar.canonical.com/[Bazaar^],
dan perkakas sistem kontrol versi lainnya juga didukung.
@@ -99,14 +100,14 @@ $
== Versi semantik dan modul
Setiap modul di dalam "go.mod" memiliki
-https://semver.org/lang/id/spec/v2.0.0.html[versi semantik],
+https://semver.org/lang/id/spec/v2.0.0.html[versi semantik^],
versi minimum dari dependensi yang digunakan untuk membangun modul.
Sebuah versi semantik memiliki bentuk vMAJOR.MINOR.PATCH.
* Tingkatkan versi MAJOR bila Anda membuat perubahan yang
- https://golang.org/doc/go1compat[tidak kompatibel] pada API dari modul
- Anda.
+ https://golang.org/doc/go1compat[tidak kompatibel^]
+ pada API dari modul Anda.
Hal ini sebaiknya dilakukan bila sangat diperlukan.
* Tingkatkan versi MINOR bila Anda membuat perubahan yang kompatibel pada
API, seperti mengganti dependensi atau menambahkan sebuah fungsi,
@@ -129,7 +130,7 @@ versi mayor tersebut.
Versi yang diacu dalam "go.mod" bisa jadi sebuah rilis eksplisit yang di tag
dalam repositori (misalnya, v1.5.2), atau ia bisa berupa
-https://golang.org/cmd/go/#hdr-Pseudo_versions[versi-pseudo]
+https://golang.org/cmd/go/#hdr-Pseudo_versions[versi-pseudo^]
berdasarkan pada sebuah _commit_ tertentu (misalnya,
v0.0.0-20170915032832-14c0d48ead0c).
Versi-pseudo adalah tipe khusus dari versi pra-rilis.
@@ -158,8 +159,8 @@ Jika orang bergantung pada sebuah versi yang Anda hapus, maka pembangunan
program mereka mungkin akan gagal.
Hal yang sama, sekali Anda merilis sebuah versi, jangan pernah mengubah atau
menimpanya.
-https://blog.golang.org/module-mirror-launch[Salinan modul dan basisdata
-_checksum_] menyimpan modul, versi, dan hash _cryptographic_ untuk memastikan
+link:/blog/module-mirror-launch[Salinan modul dan basisdata _checksum_^]
+menyimpan modul, versi, dan hash _cryptographic_ untuk memastikan
bahwa pembangunan dari versi tersebut dapat direproduksi ulang terus menerus.
@@ -176,7 +177,7 @@ Memberi tag pada versi baru memiliki langkah-langkah berikut:
2. Jalankan "go test ./..." untuk terakhir kalinya untuk memastikan semuanya
bekerja.
3. Beri tag pada proyek dengan versi baru menggunakan
- https://git-scm.com/docs/git-tag[git-tag].
+ https://git-scm.com/docs/git-tag[git-tag^].
4. Simpan tag baru tersebut ke repositori "origin".
----
@@ -234,14 +235,17 @@ ada.
Paket "strings" pada pustaka bawaan adalah sebuah contoh menjaga
kompatibilitas dengan biaya konsistensi dari API.
-* https://pkg.go.dev/strings#Split[Split] membagi sebuah string menjadi
- sub-string yang dipisahkan oleh sebuah pemisah dan mengembalikan sebuah
- slice dari sub-string di antara pemisah tersebut.
-* https://pkg.go.dev/strings#SplitN[SplitN] dapat mengontrol jumlah
- sub-string yang dikembalikan.
+* https://pkg.go.dev/strings#Split[Split^]
+ membagi sebuah string menjadi sub-string yang dipisahkan oleh sebuah
+ pemisah dan mengembalikan sebuah slice dari sub-string di antara pemisah
+ tersebut.
+* https://pkg.go.dev/strings#SplitN[SplitN^]
+ dapat mengontrol jumlah sub-string yang dikembalikan.
-Namun, https://pkg.go.dev/strings#Replace[Replace] menerima nilai berapa
-banyak jumlah string yang akan diganti dari awal (tidak seperti "Split").
+Namun,
+https://pkg.go.dev/strings#Replace[Replace^]
+menerima nilai berapa banyak jumlah string yang akan diganti dari awal (tidak
+seperti "Split").
Dari "Split" dan "SplitN", Anda akan berharap bahwa ada fungsi seperti
"Replace" dan "ReplaceN".
@@ -249,7 +253,7 @@ Namun, kita tidak dapat mengubah fungsi "Replace" yang sudah ada tanpa
mengakibatkan kerusakan pada pemanggilan, yang mana hal tersebut telah kita
janjikan tidak akan dilakukan.
Sehingga, dalam Go 1.12, kami menambahkan fungsi baru,
-https://pkg.go.dev/strings#ReplaceAll[ReplaceAll].
+https://pkg.go.dev/strings#ReplaceAll[ReplaceAll^].
Hasil dari API sedikit aneh, secara "Split" dan "Replace" memiliki perilaku
yang berbeda, namun ketidak-konsistenan ini lebih baik daripada perubahan
yang merusak.
@@ -286,9 +290,9 @@ untuk v2 dan seterusnya.
Bila ada tanggapan dan bantuan untuk membantu manajemen dependensi di Go,
silakan kirim
-https://golang.org/issue/new[laporan kesalahan]
+https://golang.org/issue/new[laporan kesalahan^]
atau
-https://golang.org/wiki/ExperienceReports[laporan pengalaman].
+https://golang.org/wiki/ExperienceReports[laporan pengalaman^].
Terima kasih untuk semua tanggapan dan bantuan yang telah menjadikan Go modul
lebih baik.
diff --git a/_content/blog/race-detector/index.adoc b/_content/blog/race-detector/index.adoc
index 8b17dd4..20b408a 100644
--- a/_content/blog/race-detector/index.adoc
+++ b/_content/blog/race-detector/index.adoc
@@ -4,7 +4,7 @@ Dmitry Vyukov; Andrew Gerrand
== Pendahuluan
-http://en.wikipedia.org/wiki/Race_condition[Kondisi berpacu (_race conditions_)]
+https://en.wikipedia.org/wiki/Race_condition[Kondisi berpacu (_race conditions_)^]
adalah salah satu dari kesalahan pemrograman yang berbahaya dan
sukar ditangkap.
Kesalahan ini biasanya menyebabkan kegagalan yang tidak menentu dan misterius,
@@ -15,21 +15,21 @@ Perhatian, ketekunan, dan pengujian diperlukan.
Dan perkakas yang tepat juga dapat membantu.
Kami dengan gembira memperkenalkan
-link:/doc/articles/race_detector.html[pendeteksi _data race_]
+link:/doc/articles/race_detector.html[pendeteksi _data race_^]
pada Go 1.1, sebuah perkakas baru untuk menemukan kondisi berpacu dalam kode
Go.
Sekarang ini tersedia pada sistem Linux, OS X, dan Windows dengan prosesor x86
64-bit.
Pendeteksi _data race_ didasari oleh
-https://github.com/google/sanitizers[pustaka _ThreadSanitizer_]
+https://github.com/google/sanitizers[pustaka _ThreadSanitizer_^]
dari C/C++,
yang telah lama digunakan untuk mendeteksi banyak eror dalam basis kode
internal Google dan
-http://www.chromium.org/[Chromium].
+https://www.chromium.org/[Chromium^].
Teknologi ini diintegrasikan pada Go di bulan September 2012; sejak itu ia
telah menangkap
-https://github.com/golang/go/issues?utf8=%E2%9C%93&q=ThreadSanitizer[42 kondisi]
+https://github.com/golang/go/issues?utf8=%E2%9C%93&q=ThreadSanitizer[42 kondisi6^]
berpacu dalam pustaka standar.
Sekarang ia telah menjadi bagian dari proses pembangunan berkelanjutan, yang
mana terus menangkap kondisi berpacu bila ia muncul.
@@ -43,7 +43,7 @@ pustaka _runtime_ membaca adanya akses yang tidak disinkronisasi ke variabel
yang berbagi.
Saat perilaku "berpacu" terdeteksi, sebuah peringatan dicetak.
(Bacalah
-https://github.com/google/sanitizers/wiki/ThreadSanitizerAlgorithm[artikel berikut]
+https://github.com/google/sanitizers/wiki/ThreadSanitizerAlgorithm[artikel berikut^]
untuk memahami lebih rinci tentang bagaimana algoritma bekerja).
Pendeteksi _data race_ dapat mendeteksi kondisi berpacu hanya saat dipicu oleh
@@ -184,7 +184,7 @@ Timer `t` dan kanal `reset` yang baru mengkomunikasikan kebutuhan untuk
mereset _timer_ dengan cara yang aman.
Pendekatan lain yang lebih sederhana dan kurang efisien yaitu dengan
-http://play.golang.org/p/kuWTrY0pS4[menghindari menggunakan timer yang sama].
+https://play.golang.org/p/kuWTrY0pS4[menghindari menggunakan timer yang sama^].
=== Contoh 2: `ioutil.Discard`
@@ -192,14 +192,14 @@ http://play.golang.org/p/kuWTrY0pS4[menghindari menggunakan timer yang sama].
Contoh kedua lebih halus.
Paket `ioutil` memiliki objek
-https://golang.org/pkg/io/ioutil/#Discard[Discard]
+https://pkg.go.dev/io/ioutil#Discard[Discard^]
yang mengimplementasikan
-https://golang.org/pkg/io/#Writer[`io.Writer`],
+https://pkg.go.dev/io#Writer[`io.Writer`^],
yang meniadakan semua data yang ditulis ke dalam objek tersebut.
Seperti `/dev/null`: sebuah tempat mengirim data yang Anda bisa baca tapi
tidak ingin disimpan.
Objek `Discard` ini biasanya digunakan oleh
-https://golang.org/pkg/io/#Copy[`io.Copy`]
+https://pkg.go.dev/io#Copy[`io.Copy`^]
untuk mengosongkan pembaca, seperti ini:
----
@@ -228,7 +228,7 @@ writer.ReadFrom(reader)
----
Kita
-https://golang.org/cl/4817041[menambahkan method `ReadFrom`]
+https://golang.org/cl/4817041[menambahkan method `ReadFrom`^]
ke tipe `Discard`, yang memiliki penyangga internal yang dibagi dengan semua
penggunanya.
Kita tahu bahwa secara teori ini adalah kondisi berpacu, namun secara semua
@@ -236,19 +236,19 @@ penulisan ke penyangga seharusnya langsung dibuang kami berpikir masalah
kondisi berpacu di sini tidak begitu penting.
Saat pendeteksi _data race_ diimplementasikan ia langsung
-https://golang.org/issue/3970[menandakan kode tersebut]
+https://golang.org/issue/3970[menandakan kode tersebut^]
sebagai "berpacu".
Sekali lagi, kita menyadari bahwa kode tersebut bermasalah, namun memutuskan
bahwa kondisi berpacu tersebut tidak "nyata".
Untuk menghindari kondisi "positif salah" ini pada saat pembangunan, kita
mengimplementasikan
-https://golang.org/cl/6624059[versi yang tidak "berpacu"]
+https://golang.org/cl/6624059[versi yang tidak "berpacu"^]
yang dinyalakan hanya saat pendeteksi _data race_ berjalan.
Akan tetapi beberapa bulan kemudian
-https://bradfitz.com/[Brad]
+https://bradfitz.com/[Brad^]
menemui sebuah _bug_ yang
-https://golang.org/issue/4589[janggal dan menyebalkan].
+https://golang.org/issue/4589[janggal dan menyebalkan^].
Setelah beberapa hari melakukan _debug_, dia menemukan kondisi berpacu yang
nyata yang disebabkan oleh `ioutil.Discard`.
@@ -327,7 +327,7 @@ func (t trackDigestReader) Read(p []byte) (n int, err error) {
----
Bug ini akhirnya
-https://golang.org/cl/7011047[diperbaiki]
+https://golang.org/cl/7011047[diperbaiki^]
dengan memberikan penyangga yang unik untuk setiap penggunaan
`ioutil.Discard`, mengeliminasi kondisi berpacu pada penyangga yang berbagi.
diff --git a/_content/blog/slices/index.adoc b/_content/blog/slices/index.adoc
index fa87a8f..0d20f22 100644
--- a/_content/blog/slices/index.adoc
+++ b/_content/blog/slices/index.adoc
@@ -1,6 +1,6 @@
= Array, slice (dan string): Mekanisme 'append'
-:author: Rob Pike
-:date: 26 September 2013
+Rob Pike
+26 September 2013
== Pendahuluan
@@ -179,7 +179,7 @@ Anda akan sering mendengar pemrogram Go yang berpengalaman berbicara tentang
"header slice" karena itulah yang disimpan dalam sebuah variabel slice.
Contohnya, saat Anda memanggil sebuah fungsi yang menerima sebuah slice
sebagai argumen, seperti
-https://golang.org/pkg/bytes/#IndexRune[bytes.IndexRune],
+https://pkg.go.dev/bytes#IndexRune[bytes.IndexRune^],
header itulah yang dikirim ke fungsi.
Dalam pemanggilan berikut,
@@ -786,7 +786,7 @@ benar.
Ada banyak contoh lain dari `append`, `copy`, dan cara lain untuk menggunakan
slice dalam
-https://golang.org/wiki/SliceTricks[halaman wiki "Slice Tricks"]
+https://golang.org/wiki/SliceTricks[halaman wiki "Slice Tricks"^]
yang dibangun oleh komunitas.
@@ -894,7 +894,7 @@ model untuk penanganan string yang efisien.
Beberapa _benchmark_ memperlihatkan peningkatan kecepatan yang besar.
Ada lebih banyak lagi bahasan tentang string, dan sebuah
-link:/blog/strings[blog terpisah]
+link:/blog/strings[blog terpisah^]
mengover hal tersebut lebih mendalam.
@@ -917,13 +917,13 @@ fungsi bawaan `copy` dan `append`.
Ada banyak informasi yang dapat ditemukan di Internet tentang slice dalam Go.
Seperti yang disebutkan sebelumnya,
-https://golang.org/wiki/SliceTricks[halaman Wiki "Slice Tricks"]
+https://golang.org/wiki/SliceTricks[halaman Wiki "Slice Tricks"^]
memiliki banyak contoh dari penggunaan slice.
Blog tentang
-link:/blog/go-slices-usage-and-internals[Slice pada Go]
+link:/blog/go-slices-usage-and-internals[Slice pada Go^]
menjelaskan lebih rinci layout memori dengan diagram yang jelas.
Artikel Russ Cox tentang
-https://research.swtch.com/godata[Struktur Data Go]
+https://research.swtch.com/godata[Struktur Data Go^]
berisi diskusi tentang slice berikut dengan beberapa struktur data
internal dari Go.
diff --git a/_content/blog/strings/index.adoc b/_content/blog/strings/index.adoc
index e5e5a26..b67e560 100644
--- a/_content/blog/strings/index.adoc
+++ b/_content/blog/strings/index.adoc
@@ -5,7 +5,7 @@
== Pendahuluan
Pada
-link:/blog/slices[blog sebelumnya]
+link:/blog/slices[blog sebelumnya^]
dijelaskan bagaimana slice bekerja dalam Go, menggunakan sejumlah contoh untuk
mengilustrasikan mekanisme di balik implementasinya.
Dengan latar belakang tersebut, artikel ini mendiskusikan string dalam Go.
@@ -24,9 +24,7 @@ banyak hal tentang bagaimana teks bekerja dalam dunia nyata.
Sebuah pendahuluan yang bagus terhadap masalah ini, independen terhadap Go,
yaitu blog dari Joel Spolsky,
-http://www.joelonsoftware.com/articles/Unicode.html[The Absolute Minimum Every
-Software Developer Absolutely, Positively Must Know About Unicode and
-Character Sets (No Excuses!)].
+https://www.joelonsoftware.com/articles/Unicode.html[The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)^].
Banyak poin-poin yang diangkat dalam tulisan tersebut akan diulang di sini.
@@ -37,7 +35,7 @@ Mari kita mulai dengan beberapa dasar.
Dalam Go, sebuah string yaitu slice dari byte yang _read-only_.
Jika Anda tidak yakin tentang apa itu slice dari byte atau bagaimana ia
bekerja, mohon baca
-link:/blog/slices[blog sebelumnya];
+link:/blog/slices[blog sebelumnya^];
kita asumsikan Anda telah membacanya.
Penting juga diperjelas di sini bahwa sebuah string menyimpan _beragam_ byte.
@@ -310,7 +308,7 @@ direpresentasikan oleh nilai tunggal.
Poin kode U+2318 misalnya, dengan nilai heksadesimal 2318, merepresentasikan
simbol ⌘.
(Untuk informasi lebih lanjut tentang poin kode tersebut, lihat
-http://unicode.org/cldr/utility/character.jsp?a=2318[halaman Unicode].)
+https://unicode.org/cldr/utility/character.jsp?a=2318[halaman Unicode^].)
Contoh lainnya, poin kode Unicode U+0061 adalah huruf kecil Latin 'A': a.
@@ -398,7 +396,7 @@ Jika pengulangan `for range` tidak cukup, bisa jadi fasilitas yang Anda
butuhkan disediakan oleh sebuah paket dalam pustaka tersebut.
Paket tersebut adalah
-https://golang.org/pkg/unicode/utf8/[`unicode/utf8`],
+https://pkg.go.dev/unicode/utf8/[`unicode/utf8`^],
yang berisi fungsi-fungsi yang membantu untuk memvalidasi, membedah, dan
menggabungkan string-string UTF-8.
Berikut contoh program yang sama dengan `for range` di atas, namun dengan
@@ -421,7 +419,7 @@ Pengulang `for range` dan `DecodeRuneInString` didefinisikan menghasilkan
urutan iterasi yang sama.
Lihat
-https://golang.org/pkg/unicode/utf8/[dokumentasi]
+https://pkg.go.dev/unicode/utf8/[dokumentasi^]
paket `unicode/utf8` untuk melihat fasilitas lain yang disediakan paket
tersebut.
diff --git a/_content/blog/survey2019/index.adoc b/_content/blog/survey2019/index.adoc
index fc844dd..28ebeb0 100644
--- a/_content/blog/survey2019/index.adoc
+++ b/_content/blog/survey2019/index.adoc
@@ -8,16 +8,15 @@ Sejak tahun 2016, ribuan Gopher di seluruh dunia telah membantu proyek Go
dengan membagikan pemikiran mereka lewat Survei Pengembang Go.
Umpan balik Anda telah berperan penting dalam mengarahkan bahasa,
ekosistem, dan komunitas kita ini; termasuk
-https://about.sourcegraph.com/go/gophercon-2019-go-pls-stop-breaking-my-editor[server
-bahasa `gopls`],
-https://blog.golang.org/go1.13-errors[mekanisme penanganan eror] yang baru,
-https://blog.golang.org/module-mirror-launch[modul _mirror_],
+https://about.sourcegraph.com/go/gophercon-2019-go-pls-stop-breaking-my-editor[server bahasa `gopls`^],
+https://blog.golang.org/go1.13-errors[mekanisme penanganan eror^] yang baru,
+https://blog.golang.org/module-mirror-launch[modul _mirror_^],
dan banyak hal lainnya sejak
-https://blog.golang.org/go1.13[rilis Go 1.13].
+https://blog.golang.org/go1.13[rilis Go 1.13^].
Dan tentu saja, kami membagikan hasil
-https://blog.golang.org/survey2016-results[survei ini]
-https://blog.golang.org/survey2017-results[setiap]
-https://blog.golang.org/survey2018-results[tahun],
+https://blog.golang.org/survey2016-results[survei ini^]
+https://blog.golang.org/survey2017-results[setiap^]
+https://blog.golang.org/survey2018-results[tahun^],
supaya kita semua mendapatkan keuntungan dari wawasan komunitas ini.
Hari ini kami meluncurkan Survei Pengembang Go 2019.
@@ -27,8 +26,7 @@ supaya bahasa, komunitas, dan ekosistem tetap sesuai dengan kebutuhan dari
orang-orang yang dekat dengan Go.
Mohon bantu kami membentuk masa depan Go dengan berpartisipasi dalam survei
selama 15 menit sampai 15 Desember:
-https://google.qualtrics.com/jfe/form/SV_b1xqnBCMpZAhJZ3[Isi Survei Developer
-Go 2019].
+https://google.qualtrics.com/jfe/form/SV_b1xqnBCMpZAhJZ3[Isi Survei Developer Go 2019^].
== Sebarkan!
diff --git a/_content/blog/third-party-libraries-goprotobuf-and/index.adoc b/_content/blog/third-party-libraries-goprotobuf-and/index.adoc
index 64500e9..2b303c9 100644
--- a/_content/blog/third-party-libraries-goprotobuf-and/index.adoc
+++ b/_content/blog/third-party-libraries-goprotobuf-and/index.adoc
@@ -4,10 +4,9 @@
Pada tanggal 24 Maret, Rob Pike mengumumkan
-http://code.google.com/p/goprotobuf/[goprotobuf], pustaka Go untuk format
-pertukaran data menggunakan
-http://code.google.com/apis/protocolbuffers/docs/overview.html[Protocol
-Buffers]
+https://code.google.com/p/goprotobuf/[goprotobuf^],
+pustaka Go untuk format pertukaran data menggunakan
+https://code.google.com/apis/protocolbuffers/docs/overview.html[Protocol Buffers^]
dari Google, disebut protobuf secara singkat.
Dengan pengumuman ini, Go bergabung dengan C++, Java, dan Python sebagai
bahasa yang menyediakan implementasi protobuf.
@@ -21,9 +20,9 @@ dan sebuah paket Go yang mengimplementasikan dukungan untuk _encoding_,
_decoding_, dan mengakses _protocol buffer_.
Untuk menggunakan goprotobuf, Anda perlu memasang Go dan
-http://code.google.com/p/protobuf/[protobuf].
+https://code.google.com/p/protobuf/[protobuf^].
Kemudian Anda dapat memasang paket 'proto' lewat
-https://golang.org/cmd/goinstall/[goinstall]:
+https://golang.org/cmd/goinstall/[goinstall^]:
----
goinstall goprotobuf.googlecode.com/hg/proto
@@ -37,34 +36,33 @@ make install
----
Untuk lebih jelas lihat berkas
-http://code.google.com/p/goprotobuf/source/browse/README[README]
+https://code.google.com/p/goprotobuf/source/browse/README[README^]
dari proyek tersebut.
Ini adalah salah satu dari daftar pustaka pihak-ketiga dari
-http://godashboard.appspot.com/package[proyek-proyek Go]
+https://godashboard.appspot.com/package[proyek-proyek Go^]
yang terus berkembang.
Sejak diluncurkannya goprotobuf, Go _binding_ untuk X telah dipindahkan ke
proyek
-http://code.google.com/p/x-go-binding/[x-go-binding],
+https://code.google.com/p/x-go-binding/[x-go-binding^],
dan pekerjaan lain telah mulai mengimplementasikan
-http://www.freetype.org/[Freetype],
-http://code.google.com/p/freetype-go/[freetype-go].
+https://www.freetype.org/[Freetype^],
+https://code.google.com/p/freetype-go/[freetype-go^].
Proyek pihak-ketiga lainnya yang terkenal termasuk kerangka kerja web ringan
-http://github.com/hoisie/web.go[web.go],
+https://github.com/hoisie/web.go[web.go^],
dan Go _binding_ untuk GTK
-http://github.com/mattn/go-gtk[gtk-go].
+https://github.com/mattn/go-gtk[gtk-go^].
Kami mendorong pengembangan paket-paket berguna lainnya oleh komunitas sumber
terbuka.
Jika Anda sedang membuat sesuatu dengan Go, jangan simpan saja -- beri tahu
kami lewat _mailing list_
-http://groups.google.com/group/golang-nuts[golang-nuts].
+https://groups.google.com/group/golang-nuts[golang-nuts^].
== Artikel terkait
-* link:/blog/a-new-go-api-for-protocol-buffers[Go API baru untuk Protocol
- Buffers],
-* link:/blog/go1.15-proposals[Proposal untuk Go 1.15],
-* link:/blog/survey2019[Mengumumkan Survei Pengembang Go 2019], 20 November
+* link:/blog/a-new-go-api-for-protocol-buffers[Go API baru untuk Protocol Buffers^],
+* link:/blog/go1.15-proposals[Proposal untuk Go 1.15^],
+* link:/blog/survey2019[Mengumumkan Survei Pengembang Go 2019^], 20 November
diff --git a/_content/blog/using-go-modules/index.adoc b/_content/blog/using-go-modules/index.adoc
index 23a00ca..0a28081 100644
--- a/_content/blog/using-go-modules/index.adoc
+++ b/_content/blog/using-go-modules/index.adoc
@@ -7,26 +7,26 @@
Tulisan ini adalah bagian pertama dari sebuah seri.
* Bagian 1 - Menggunakan Go Modul (tulisan ini)
-* Bagian 2 - link:/blog/migrating-to-go-modules[Migrasi ke Go Modul]
-* Bagian 3 - link:/blog/publishing-go-modules[Menerbitkan Go Modul]
-* Bagian 4 - link:/blog/v2-go-modules[Go Modul: v2 dan seterusnya]
+* Bagian 2 - link:/blog/migrating-to-go-modules[Migrasi ke Go Modul^]
+* Bagian 3 - link:/blog/publishing-go-modules[Menerbitkan Go Modul^]
+* Bagian 4 - link:/blog/v2-go-modules[Go Modul: v2 dan seterusnya^]
Go 1.11 dan 1.12 mengikutkan
-https://golang.org/doc/go1.11#modules[dukungan awal untuk modul],
-https://blog.golang.org/versioning-proposal[sistem manajemen dependensi baru]
+https://golang.org/doc/go1.11#modules[dukungan awal untuk modul^],
+https://blog.golang.org/versioning-proposal[sistem manajemen dependensi baru^]
dari Go yang membuat versi informasi dependensi eksplisit dan mudah diatur.
Artikel ini adalah pengenalan dari operasi dasar yang dibutuhkan untuk memulai
menggunakan modul.
Sebuah modul adalah kumpulan dari
-link:/ref/spec#Packages[paket-paket Go]
+link:/ref/spec#Packages[paket-paket Go^]
yang disimpan dalam sebuah pohon berkas dengan berkas `go.mod` di atasnya.
Berkas `go.mod` mendefinisikan _module path_ dari modul, yang juga merupakan
path impor yang digunakan pada direktori teratas, dan _kebutuhan dependensi_
nya, yang merupakan modul-modul lain yang dibutuhkan untuk pembangunan supaya
berhasil.
Setiap kebutuhan dependensi ditulis sebagai sebuah path modul dan sebuah
-http://semver.org/[versi semantik].
+https://semver.org/[versi semantik^].
Pada Go 1.11, perintah `go` membolehkan penggunaan modul saat direktori yang
digunakan sekarang atau direktori di atasnya memiliki sebuah `go.mod`, selama
@@ -34,7 +34,7 @@ direktori tersebut berada _di luar_ `$GOPATH/src`.
(Di dalam `$GOPATH/src`, untuk kompatibilitas, perintah `go` masih tetap
berjalan dengan mode GOPATH lama, walaupun `go.mod` ditemukan.
Lihat
-link:/cmd/go/#hdr-Preliminary_module_support[dokumentasi perintah go]
+link:/cmd/go/#hdr-Preliminary_module_support[dokumentasi perintah go^]
untuk lebih detil.)
Mulai dari Go 1.13, mode modul akan menjadi baku untuk semua pengembangan.
@@ -172,7 +172,7 @@ Saat ia menemui sebuah `import` dari sebuah paket yang tidak ditemukan dalam
`go.mod`, perintah `go` otomatis mencari modul yang berisi paket tersebut dan
menambahkannya ke `go.mod`, menggunakan versi yang terakhir.
("Terakhir" didefinisikan sebagai versi terakhir yang di tag sebagai stabil --
-https://semver.org/#spec-item-9[yang bukan pra-rilis],
+https://semver.org/#spec-item-9[yang bukan pra-rilis^],
atau versi pra-release terakhir yang di tag, atau versi terakhir yang tidak di
tag.)
Dalam contoh di atas, "go test" menangani impor yang baru "rsc.io/quote" ke
@@ -208,7 +208,7 @@ Modul anda sekarang benar-benar _bergantung_ pada dependensi baru dalam ruang
yang rawan, beberapa hal harus diperhatikan seperti ketepatan, keamanan, dan
lisensi.
Untuk pertimbangan lebih lanjut, lihat artikel dari Russ Cox,
-https://research.swtch.com/deps["Our Software Dependency Problem"].
+https://research.swtch.com/deps["Our Software Dependency Problem"^].
Seperti yang telah kita lihat di atas, menambah satu dependensi secara
langsung terkadang membawa dependensi tidak langsung juga.
@@ -229,13 +229,12 @@ yang diurut berdasar path modul.
Baris "golang.org/x/text version v0.0.0-20170915032832-14c0d48ead0c" adalah
sebuah contoh dari
-https://golang.org/cmd/go/#hdr-Pseudo_versions[versi-pseudo],
+https://golang.org/cmd/go#hdr-Pseudo_versions[versi-pseudo^],
yang merupakan sintaksis untuk commit yang tidak ada tag-nya.
Selain "go.mod", perintah go juga membuat sebuah berkas bernama "go.sum" yang
berisi
-https://golang.org/cmd/go/#hdr-Module_downloading_and_verification[hash
-kriptografi]
+https://golang.org/cmd/go#hdr-Module_downloading_and_verification[hash kriptografi^]
dari isi modul pada versi tertentu:
----
@@ -426,7 +425,7 @@ dimulai dari v2, path haruslah berakhir dengan versi mayor.
Pada contoh di atas, v3 dari "rsc.io/quote" tidak lagi "rsc.io/quote":
tetapi ia teridentifikasi oleh path modul "rsc.io/quote/v3".
Konvensi ini disebut dengan
-https://research.swtch.com/vgo-import[semantic import versioning],
+https://research.swtch.com/vgo-import[semantic import versioning^],
yang membolehkan paket-paket yang tidak kompatibel (yang berbeda versi
mayor) menggunakan nama yang berbeda.
Sebaliknya, v1.6.0 dari "rsc.io/quote" seharusnya kompatibel dengan v1.5.2,
@@ -476,7 +475,7 @@ $
----
(Keluaran di atas telah diketahui memiliki sebuah
-https://golang.org/issue/30778[_bug_];
+https://golang.org/issue/30778[_bug_^];
path impor ditampilkan tanpa ada "/v3")
Kita dapat memperbarui penggunaan "quote.Hello()" dalam "hello.go" dengan
@@ -606,8 +605,8 @@ Kami menyarankan anda untuk mulai menggunakan modul dalam pengembangan dan
menambahkan berkas "go.mod" dan "go.sum" ke dalam proyek anda.
Bila Anda memiliki umpan balik dan bantuan dalam pengembangan manajemen
dependensi di Go di masa depan, mohon kirim
-https://golang.org/issue/new[laporan _bug_]
+https://golang.org/issue/new[laporan _bug_^]
atau
-https://golang.org/wiki/ExperienceReports[laporan pengalaman].
+https://golang.org/wiki/ExperienceReports[laporan pengalaman^].
Terima kasih untuk semua saran dan bantuan Anda dalam meningkatkan modul.
diff --git a/_content/blog/v2-go-modules/index.adoc b/_content/blog/v2-go-modules/index.adoc
index 89dee96..b1c5dc0 100644
--- a/_content/blog/v2-go-modules/index.adoc
+++ b/_content/blog/v2-go-modules/index.adoc
@@ -6,9 +6,9 @@
Tulisan ini adalah bagian ke 4 dari sebuah seri.
-* Bagian 1 - link:/blog/using-go-modules[Menggunakan Go Modul]
-* Bagian 2 - link:/blog/migrating-to-go-modules[Migrasi ke Go Modul]
-* Bagian 3 - link:/blog/publishing-go-modules[Menerbitkan Go Modul]
+* Bagian 1 - link:/blog/using-go-modules[Menggunakan Go Modul^]
+* Bagian 2 - link:/blog/migrating-to-go-modules[Migrasi ke Go Modul^]
+* Bagian 3 - link:/blog/publishing-go-modules[Menerbitkan Go Modul^]
* Bagian 4 - Go Modul: v2 dan seterusnya (tulisan ini)
Saat sebuah proyek semakin matang dan kebutuhan-kebutuhan yang baru terus
@@ -36,7 +36,7 @@ yang berbeda pada sebuah modul.
== Versi mayor dan path modul
Modul adalah prinsip yang penting dalam Go,
-https://research.swtch.com/vgo-import[aturan kompatibilitas impor]:
+https://research.swtch.com/vgo-import[aturan kompatibilitas impor^]:
----
Jika sebuah paket yang lama dan sebuah paket yang baru memiliki path impor
@@ -57,10 +57,9 @@ dependensi modul ke "github.com/googleapis/gax-go/v2".
Kebutuhan dari adanya sufiks versi mayor adalah salah satu cara dari Go modul
yang berbeda dengan kebanyakan sistem manajemen dependensi.
Sufiks dibutuhkan untuk menghadapi
-https://research.swtch.com/vgo-import#dependency_story[permasalahan dependensi
-_diamond_].
+https://research.swtch.com/vgo-import#dependency_story[permasalahan dependensi _diamond_^].
Sebelum adanya Go modul,
-http://gopkg.in/[gopkg.in]
+https://gopkg.in/[gopkg.in^]
membolehkan penulis paket untuk mengikuti apa yang sekarang kita sebut sebagai
aturan kompatibilitas impor.
Dalam gopkg.in, jika Anda bergantung pada sebuah paket yang mengimpor
diff --git a/_content/blog/versioning-proposal/index.adoc b/_content/blog/versioning-proposal/index.adoc
index f418ef1..b01be95 100644
--- a/_content/blog/versioning-proposal/index.adoc
+++ b/_content/blog/versioning-proposal/index.adoc
@@ -24,7 +24,7 @@ sampai musim gugur, kami semua percaya bahwa jawabannya adalah mengikuti
pendekatan versi paket yang dicontohkan oleh Cargo dari bahasa Rust, dengan
sebuah tag versi semantik, sebuah manifesto, dan sebuah berkas _pengunci_, dan
sebuah
-https://research.swtch.com/version-sat[SAT solver]
+https://research.swtch.com/version-sat[SAT solver^]
yang memutuskan versi mana yang digunakan.
Sam Boyer memimpin sebuah tim menciptakan Dep, yang mengikuti langkah dasar
tersebut, dan yang kita gunakan sebagai model untuk integrasi dengan perintah
@@ -37,7 +37,7 @@ yang berbeda, terutama yang memperhatikan kompatibilitas.
== Impak dari Kompatibilitas
Fitur baru paling penting dari
-https://blog.golang.org/preview-of-go-version-1[Go 1]
+https://blog.golang.org/preview-of-go-version-1[Go 1^]
bukanlah sebuah fitur bahasa.
Melainkan penekanan pada kompatibilitas.
Sampai pada titik tersebut kami telah melakukan rilis stabil setiap bulan,
@@ -45,11 +45,12 @@ setiap rilis dengan perubahan yang tidak kompatibel.
Kami melihat adanya akselerasi yang signifikan dalam ketertarikan dan adopsi
secara langsung setelah rilis dari Go 1.
Kami percaya bahwa dengan
-https://golang.org/doc/go1compat.html[menjamin kompatibilitas]
+https://golang.org/doc/go1compat.html[menjamin kompatibilitas^]
membuat pengembang merasa lebih nyaman bergantung pada Go untuk penggunaan di
tingkat produksi dan salah satu alasan kunci bahwa Go sekarang menjadi
terkenal.
-Sejak 2013, link:/doc/faq#get_version[Go FAQ]
+Sejak 2013,
+link:/doc/faq#get_version[Go FAQ^]
telah mendukung para pengembang paket untuk menyediakan bagi pengguna mereka
ekspektasi yang sama dari kompatibilitas.
Kami menyebutnya dengan _aturan kompatibilitas impor_: "Jika sebuah paket lama
@@ -82,7 +83,7 @@ Saat saya menyadari ini, kebutuhan logis tersebut mengejutkan saya.
Saya juga terkejut menyadari bahwa ada rute logika independen kedua terhadap
_semantic import versioning_:
-https://talks.golang.org/2016/refactor.article[perbaikan kode secara gradual]
+https://talks.golang.org/2016/refactor.article[perbaikan kode secara gradual^]
atau pembaruan kode secara parsial.
Dalam sebuah program yang besar, adalah hal yang tidak realistis untuk
berharap semua paket dalam program untuk memperbarui sebuah dependensi
@@ -124,7 +125,7 @@ Saya juga cukup terkejut menjumpai berapa banyak kompatibilitas impor
menyederhanakan pemilihan versi, yang mana merupakan permasalahan menentukan
versi paket mana yang digunakan untuk sebuah pembangunan.
Batasan-batasan dari Cargo dan Dep membuat pemilihan versi sama dengan
-https://research.swtch.com/version-sat[pemecahan kepuasan Boolean],
+https://research.swtch.com/version-sat[pemecahan kepuasan Boolean^],
artinya, bisa sangat mahal untuk menentukan apakah sebuah konfigurasi versi
yang valid itu benar ada.
Dan bisa saja banyak konfigurasi yang valid, tanpa ada kriteria untuk memilih
@@ -133,7 +134,7 @@ Bergantung pada kompatibilitas impor membuat Go menggunakan algoritme yang
biasa, dengan waktu yang linear untuk menemukan sebuah konfigurasi yang
terbaik, yang selalu ada.
Algoritme ini, yang saya sebut dengan
-https://research.swtch.com/vgo-mvs[_minimal version selection_]
+https://research.swtch.com/vgo-mvs[_minimal version selection_^]
(pemilihan versi minimum), ternyata mengeliminasi kebutuhan untuk berkas
_lock_ dan _manifest_ yang terpisah.
Ia menggantinya dengan sebuah berkas konfigurasi yang singkat, disunting
@@ -177,7 +178,7 @@ Dep dapat mendukung pembaruan kode parsial, saya menyadari bahwa saran lama
kita tentang kompatibilitas impor mengimplikasikan versi impor semantik.
Hal ini tampak seperti solusi yang nyata.
Saya menulis draf pertama yang menjadi artikel
-https://research.swtch.com/vgo-import[versi impor semantik],
+https://research.swtch.com/vgo-import[versi impor semantik^],
dengan kesimpulan menyarankan supaya Dep mengadopsi konvensi tersebut.
Saya mengirim draf tersebut ke orang-orang yang telah berbicara dengan saya
sebelumnya, dan mendapatkan respons yang sangat kuat: semua orang menyukainya
@@ -188,7 +189,7 @@ saya lakukan itu.
Pada pertengahan Desember, saya menemukan bahwa kompatibilitas impor dan versi
impor semantik keduanya membolehkan memotong pemilihan versi menjadi
-https://research.swtch.com/vgo-mvs[pemilihan versi minimum].
+https://research.swtch.com/vgo-mvs[pemilihan versi minimum^].
Saya menulis implementasi dasar untuk memastikan apakah saya benar-benar
paham, saya habiskan beberapa waktu untuk mempelajari teori di balik kenapa ia
begitu sederhana, dan saya tulis sebuah draf artikel yang menjelaskan hal
@@ -209,7 +210,7 @@ konstanta--tetapi pendekatan tersebut sangat memungkinkan.
Saya habiskan tiga minggu awal Februari membuat program tersebut menjadi
sebuah program `go` terpisah, `vgo`;
menulis draf dari
-https://research.swtch.com/vgo[seri blog memperkenalkan `vgo`];
+https://research.swtch.com/vgo[seri blog memperkenalkan `vgo`^];
dan mendiskusikannya dengan Sam Boyer, kelompok kerja manajemen paket, dan
tim Go.
Dan kemudian saya habiskan seminggu terakhir Februari berbagi tentang `vgo`
@@ -219,24 +220,24 @@ Sebagai tambahan dari ide inti dari kompatibilitas impor, versi impor
semantik, dan pemilihan versi minimum, prototipe `vgo` memperkenalkan sejumlah
perubahan kecil yang signifikan yang dimotivasi oleh delapan tahun pengalaman
dengan `goinstall` dan `go get`: konsep baru dari sebuah
-https://research.swtch.com/vgo-module[Go modul],
+https://research.swtch.com/vgo-module[Go modul^],
yang merupakan kumpulan paket-paket dengan versi sebagai sebuah unit
tersendiri;
-https://research.swtch.com/vgo-repro[pembangunan yang dapat diverifikasi dan
-pasti]; dan
-https://research.swtch.com/vgo-cmd[perintah `go` yang mengenal versi],
+https://research.swtch.com/vgo-repro[pembangunan yang dapat diverifikasi dan pasti^];
+dan
+https://research.swtch.com/vgo-cmd[perintah `go` yang mengenal versi^],
membolehkan bekerja di luar $GOPATH dan menghilangkan (kebanyakan) direktori
vendor.
Hasil dari semua itu adalah sebuah
-https://golang.org/design/24301-versioned-go[proposal Go yang resmi],
+https://golang.org/design/24301-versioned-go[proposal Go yang resmi^],
yang saya kirim akhir minggu lalu.
Walaupun tampak seperti implementasi yang penuh, ia masih prototipe, sebuah
karya yang harus kita selesaikan bersama.
Anda bisa mengunduh dan mencoba prototipe vgo lewat
-https://golang.org/x/vgo[golang.org/x/vgo],
+https://golang.org/x/vgo[golang.org/x/vgo^],
dan Anda bisa membaca
-https://research.swtch.com/vgo-tour[Tur dari Go berversi]
+https://research.swtch.com/vgo-tour[Tur dari Go berversi^]
untuk merasakan seperti apa vgo.
== Langkah ke depan
@@ -251,11 +252,11 @@ sekarang, untuk memastikan bahwa implementasi yang final yang diikutkan pada
rilis Go selanjutnya bekerja dengan benar untuk semua pengembang sebisa
mungkin.
Silahkan ajukan permasalahan di
-https://golang.org/issue/24301[isu diskusi proposal].
+https://golang.org/issue/24301[isu diskusi proposal^].
Saya akan mencatat
-https://golang.org/issue/24301#issuecomment-371228742[kesimpulan diskusi]
+https://golang.org/issue/24301#issuecomment-371228742[kesimpulan diskusi^]
dan memperbarui
-https://golang.org/issue/24301#issuecomment-371228664[FAQ]
+https://golang.org/issue/24301#issuecomment-371228664[FAQ^]
saat saran-saran bermunculan.
Agar proposal ini sukses, ekosistem Go secara keseluruhan--dan khususnya
diff --git a/_content/cmd/go/index.adoc b/_content/cmd/go/index.adoc
index 74f7ba9..df1adbf 100644
--- a/_content/cmd/go/index.adoc
+++ b/_content/cmd/go/index.adoc
@@ -1857,7 +1857,8 @@ cmd/cgo).
Yang kedua yaitu program SWIG, yaitu sebuah perkakas umum antarmuka antar
bahasa.
-Informasi lebih lanjut tentang SWIG lihat http://swig.org/[swig.org^].
+Informasi lebih lanjut tentang SWIG lihat
+https://swig.org/[swig.org^].
Saat menjalankan "go build", setiap berkas dengan ekstensi .swig akan dikirim
ke SWIG.
Setiap berkas dengan ekstensi .swigcxx akan dikirim ke SWIG dengan opsi
@@ -2291,7 +2292,9 @@ Go mencari setiap direktori yang terdaftar dalam `GOPATH` untuk mencari sumber
kode, namun paket-paket yang baru selalu diunduh ke direktori pertama dalam
daftar tersebut.
-Lihat https://golang.org/doc/code.html sebagai contohnya.
+Lihat
+link:/doc/code.html
+sebagai contohnya.
[#hdr-GOPATH_and_Modules]
== GOPATH dan modul
diff --git a/_content/doc/articles/go_command.adoc b/_content/doc/articles/go_command.adoc
index 4f4fd99..6d336d0 100644
--- a/_content/doc/articles/go_command.adoc
+++ b/_content/doc/articles/go_command.adoc
@@ -2,7 +2,7 @@
:toc:
Distribusi Go mengikutkan sebuah perintah, bernama
-link:/cmd/go/["go"],
+link:/cmd/go["go"^],
yang mengotomasi pengunduhan, pembangunan, pemasangan, dan pengujian dari
paket-paket dan perintah-perintah Go.
Dokumen ini membahas tentang kenapa kita menulis sebuah perintah baru, bentuk
@@ -59,7 +59,7 @@ Hal ini dapat dipahami: karena begitulah cara kerja pada umumnya pada bahasa
pemrograman lainnya.
Selama beberapa tahun terakhir kami secara konsisten mengingatkan orang
tentang perintah `goinstall` (sekarang diganti dengan
-link:/cmd/go/#hdr-Download_and_install_packages_and_dependencies[go get])
+link:/cmd/go#hdr-Download_and_install_packages_and_dependencies[go get^])
dan konvensi-konvensinya:
pertama, path impor diturunkan dengan cara yang diketahui dari URL sumber
kodenya;
@@ -105,7 +105,7 @@ git clone https://github.com/golang/example
maka path impor dari direktori utama dari repositori itu adalah
"github.com/golang/example".
Paket
-https://godoc.org/github.com/golang/example/stringutil[stringutil]
+https://pkg.go.dev/github.com/golang/example/stringutil[stringutil^]
di simpan dalam sebuah sub direktori, sehingga path impornya adalah
"github.com/golang/example/stringutil".
@@ -165,7 +165,7 @@ Seperti yang telah dijelaskan di atas, nilai standar dari `$GOPATH` pada Unix
adalah `$HOME/go`.
Kita akan menyimpan program kita di sana.
Untuk menggunakan lokasi yang berbeda anda dapat menset `$GOPATH`;
-link:/doc/code.html[Cara Menulis Kode Go]
+link:/doc/code.html[Cara Menulis Kode Go^]
untuk lebih jelasnya.
Pertama kita tambahkan beberapa sumber kode.
@@ -262,7 +262,7 @@ Seperti yang telah disebutkan juga di atas, perintah `go` bukanlah perkakas
pembangun yang umum.
Ia tidak memiliki fasilitas untuk menghasilkan berkas sumber Go _selama_
pembangunan, walaupun ia menyediakan
-link:/cmd/go/#hdr-Generate_Go_files_by_processing_source[go generate],
+link:/cmd/go#hdr-Generate_Go_files_by_processing_source[go generate^],
yang dapat mengotomasi pembuatan berkas Go _sebelum_ dibangun.
Untuk pembangunan lebih lanjut, Anda mungkin perlu menulis sebuah _makefile_
(atau berkas konfigurasi untuk perkakas pembangun yang Anda pilih) untuk
@@ -276,6 +276,6 @@ get" tanpa perlu mendapatkan dan membangun perkakas tambahan.
== Informasi lebih lanjut
Untuk informasi lebih lanjut, baca
-link:/doc/code.html[Cara Menulis Kode Go]
+link:/doc/code.html[Cara Menulis Kode Go^]
dan lihat
-link:/cmd/go/[perintah go].
+link:/cmd/go/[perintah go^].
diff --git a/_content/doc/articles/race_detector.adoc b/_content/doc/articles/race_detector.adoc
index 25d9e10..fb8dc0a 100644
--- a/_content/doc/articles/race_detector.adoc
+++ b/_content/doc/articles/race_detector.adoc
@@ -11,7 +11,8 @@ dalam sistem konkuren.
_Data race_ terjadi saat dua goroutine mengakses variabel yang sama secara
bersamaan dengan salah satu metoda akses adalah tulis.
Lihat
-link:/ref/mem/[Model memori pada Go] untuk lebih rinci.
+link:/ref/mem/[Model memori pada Go^]
+untuk lebih rinci.
Berikut contoh _data race_ yang bisa membuat program _crash_ dan korupsi pada
memori:
@@ -342,7 +343,7 @@ saat mengakses memori prosesor.
Cara paling umum untuk memperbaiki _data race_ seperti ini yaitu dengan
menggunakan sebuah kanal (_channel_) atau `mutex`.
Supaya bebas-penguncian, bisa menggunakan paket
-https://golang.org/pkg/sync/atomic/[`sync/atomic`].
+https://pkg.go.dev/sync/atomic/[`sync/atomic`^].
----
type Watchdog struct{ last int64 }
@@ -381,8 +382,8 @@ close(c)
----
Menurut
-link:/ref/mem[Memori model pada Go], pengiriman ke kanal terjadi sebelum
-penerimaan dari kanal selesai.
+link:/ref/mem[Memori model pada Go^],
+pengiriman ke kanal terjadi sebelum penerimaan dari kanal selesai.
Untuk sinkronisasi operasi kirim-dan-tutup, gunakan operasi penerimaan untuk
menjamin bahwa pengiriman selesai sebelum operasi tutup dilakukan:
@@ -412,7 +413,7 @@ umumnya penggunaan memori bisa meningkat 5-10x dan waktu eksekusi bertambah
Pendeteksi _data race_ saat ini mengalokasikan 8 byte tambahan per perintah
`defer` dan `recover`.
Alokasi tambahan ini
-https://golang.org/issue/26813[tidak berkurang sampai goroutine selesai].
+https://golang.org/issue/26813[tidak berkurang sampai goroutine selesai^].
Hal ini berarti jika Anda memiliki goroutine yang berjalan lama yang secara
periodik memanggil `defer` dan `recover`, penggunaan memori program Anda bisa
bertambah tanpa batas.
diff --git a/_content/doc/articles/wiki/index.adoc b/_content/doc/articles/wiki/index.adoc
index 885cf67..cef6190 100644
--- a/_content/doc/articles/wiki/index.adoc
+++ b/_content/doc/articles/wiki/index.adoc
@@ -106,7 +106,7 @@ Nilai integer oktal 0600, yang dikirim sebagai parameter ketiga pada
`WriteFile`, mengindikasikan bahwa berkas dibuat dengan akses baca-tulis untuk
pengguna yang sekarang.
(Lihat halaman manual Unix untuk
-https://man.archlinux.org/man/open.2[`open(2)`]
+https://man.archlinux.org/man/open.2[`open(2)`^]
untuk lebih detail.)
Selain menyimpan halaman, kita juga ingin membaca halaman dari berkas:
@@ -181,8 +181,7 @@ This is a sample Page.
(Jika Anda menggunakan sistem Windows, Anda harus mengetikan "wiki" tanpa "./"
untuk menjalankan program.)
-link:/doc/articles/wiki/part1.go[Klik di sini untuk melihat apa yang telah
-kita buat^].
+link:/doc/articles/wiki/part1.go[Klik di sini untuk melihat apa yang telah kita buat^].
== Memperkenalkan paket `net/http`
@@ -479,8 +478,7 @@ func editHandler(w http.ResponseWriter, r *http.Request) {
Jika kita tutup registrasi dari fungsi `save` yang belum diimplementasikan
dalam fungsi `main`, kita dapat membangun dan menguji program kita.
-link:/doc/articles/wiki/part3.go[Klik di sini untuk melihat kode yang telah
-kita tulis sejauh ini].
+link:/doc/articles/wiki/part3.go[Klik di sini untuk melihat kode yang telah kita tulis sejauh ini^].
== Menangani halaman yang tidak ada
@@ -590,7 +588,7 @@ setiap kali sebuah halaman dibangkitkan.
Pendekatan yang lebih bagus yaitu dengan memanggil `ParseFiles` sekali saat
program diinisiasi, membaca semua berkas templat ke dalam sebuah `*Template`.
Kemudian kita dapat menggunakan method
-http://golang.org/pkg/html/template/#Template.ExecuteTemplate[`ExecuteTemplate`]
+https://pkg.go.dev/html/template#Template.ExecuteTemplate[`ExecuteTemplate`^]
untuk menulis templat tertentu.
Pertama kita buat sebuah variabel global bernama `templates` dan
@@ -825,7 +823,7 @@ func saveHandler(w http.ResponseWriter, r *http.Request, title string) {
== Cobalah!
-link:/doc/articles/wiki/final.go[Klik di sini untuk melihat hasil akhir kode].
+link:/doc/articles/wiki/final.go[Klik di sini untuk melihat hasil akhir kode^].
Kompilasi ulang kode, dan jalankan aplikasi:
diff --git a/_content/doc/code/index.adoc b/_content/doc/code/index.adoc
index c001f81..e388adb 100644
--- a/_content/doc/code/index.adoc
+++ b/_content/doc/code/index.adoc
@@ -1,7 +1,5 @@
= Cara menulis kode Go
:toc:
-:en-go-tool: https://golang.org/cmd/go/
-:en-gopath: https://golang.org/cmd/go/#hdr-GOPATH_environment_variable
[#Introduction]
@@ -37,13 +35,29 @@ modul: sebuah path impor prefiks untuk semua paket dalam modul.
Modul berisi paket-paket di dalam direktori yang berisi berkas go.mod beserta
sub-direktori di dalamnya.
-A repository contains one or more modules. A module is a collection of related Go packages that are released together. A Go repository typically contains only one module, located at the root of the repository. A file named go.mod there declares the module path: the import path prefix for all packages within the module. The module contains the packages in the directory containing its go.mod file as well as subdirectories of that directory, up to the next subdirectory containing another go.mod file (if any).
+Ingatlah bahwa Anda tidak perlu menerbitkan kode Anda ke repositori publik
+sebelum dapat digunakan.
+Sebuah modul bisa dibuat secara lokal tanpa ada repositori.
+Namun, akan lebih baik meng-organisir kode Anda supaya suatu saat dapat
+diterbitkan.
-Note that you don't need to publish your code to a remote repository before you can build it. A module can be defined locally without belonging to a repository. However, it's a good habit to organize your code as if you will publish it someday.
+Setiap path dari modul tidak hanya sebagai prefiks dari path impor bagi
+paket-paket mereka saja, tetapi juga mengindikasikan di mana perintah go harus
+mencari untuk diunduh.
+Misalnya, untuk mengunduh "golang.org/x/tools", perintah go akan
+berkomunikasi dengan repositori yang diindikasikan oleh
+https://golang.org/x/tools[golang.org/x/tools^]
+(dijelaskan lebih lanjut nanti).
-Each module's path not only serves as an import path prefix for its packages, but also indicates where the go command should look to download it. For example, in order to download the module golang.org/x/tools, the go command would consult the repository indicated by https://golang.org/x/tools (described more here).
-
-An import path is a string used to import a package. A package's import path is its module path joined with its subdirectory within the module. For example, the module github.com/google/go-cmp contains a package in the directory cmp/. That package's import path is github.com/google/go-cmp/cmp. Packages in the standard library do not have a module path prefix.
+Sebuah path impor adalah sebuah string yang digunakan untuk mengimpor sebuah
+paket.
+Sebuah path import dari paket yaitu path modul digabung dengan subdirektori di
+dalam modul tersebut.
+misalnya, modul github.com/google/go-cmp berisi sebuah paket dalam direktori
+"cmp/".
+Path import dari paket tersebut yaitu
+github.com/google/go-cmp/cmp.
+Paket-paket dari pustaka standar tidak memiliki prefiks path impor.
[#Command]
@@ -308,10 +322,11 @@ ok github.com/user/stringutil 0.165s
----
Jalankan
-https://golang.org/cmd/go/#hdr-Test_packages[`go help test`]
+link:/cmd/go#hdr-Test_packages[`go help test`^]
dan lihat
-https://golang.org/pkg/testing/[dokumentasi dari paket testing]
+https://pkg.go.dev/testing[dokumentasi dari paket testing^]
untuk belajar lebih lanjut.
+
//}}}
[#remote]
@@ -323,7 +338,7 @@ Perkakas `go` menggunakan properti ini untuk secara otomatis mengambil paket
dari repositori luar.
Misalnya, contoh-contoh yang diuraikan dalam dokumen ini juga tersimpan di
dalam sebuah repositori Git pada
-https://github.com/golang/example[github.com/golang/example].
+https://github.com/golang/example[github.com/golang/example^].
Jika mengikutkan URL dari repositori pada _import path_, `go get` akan
mengambil, membuat, dan memasangnya secara otomatis:
@@ -372,17 +387,20 @@ import "github.com/golang/example/stringutil"
Konvensi ini adalah cara mudah untuk membuat paket Go yang dapat digunakan
oleh orang lain.
Halaman
-https://golang.org/wiki/Projects[Go Wiki] dan situs
-https://godoc.org/[godoc.org] menyediakan daftar proyek dan paket eksternal
-dari Go.
+https://golang.org/wiki/Projects[Go Wiki^]
+dan situs
+https://godoc.org/[godoc.org^]
+menyediakan daftar proyek dan paket eksternal dari Go.
Untuk informasi lebih lanjut tentang menggunakan repositori luar dengan
perkakas `go`, lihatlah
-https://golang.org/cmd/go/#hdr-Remote_import_paths[`go help importpath`].
+link:/cmd/go#hdr-Remote_import_paths[`go help importpath`^].
+
//}}}
[#next]
== Selanjutnya
-Ikuti https://tour.golang-id.org[Tur Bahasa Go] untuk belajar bahasa Go secara
-daring.
+Ikuti
+https://tour.golang-id.org[Tur Bahasa Go^]
+untuk belajar bahasa Go secara daring.
diff --git a/_content/doc/diagnostics.adoc b/_content/doc/diagnostics.adoc
index 88ccbba..26d34f7 100644
--- a/_content/doc/diagnostics.adoc
+++ b/_content/doc/diagnostics.adoc
@@ -10,10 +10,10 @@ jaringan.
== Pendahuluan
//{{{
+
Ekosistem Go menyediakan sejumlah _Application Programming Interface_ (API,
atau
-https://id.wikipedia.org/wiki/Antarmuka_pemrograman_aplikasi[antarmuka
-pemrograman aplikasi])
+https://id.wikipedia.org/wiki/Antarmuka_pemrograman_aplikasi[antarmuka pemrograman aplikasi^])
dan perkakas untuk mendiagnosis permasalahan logika dan kinerja dalam
program.
Halaman dokumentasi ini memberi ringkasan perkakas yang ada dan membantu
@@ -54,9 +54,9 @@ mendapatkan informasi yang lebih tepat.
_Profiling_ berguna untuk mengidentifikasi bagian kode yang sering dipanggil
dan yang paling memakan sumber daya.
_Runtime_ menyediakan
-https://golang.org/pkg/runtime/pprof/[data profiling]
+https://pkg.go.dev/runtime/pprof/[data profiling^]
dalam format yang dapat dibaca oleh
-{link-google-pprof}[perkakas visualisasi pprof].
+{link-google-pprof}[perkakas visualisasi pprof^].
Data _profiling_ dapat dikumpulkan selama melakukan pengujian lewat `go test`
atau dari _endpoint_ yang disediakan oleh paket `net/http/pprof`.
Pengguna harus mengumpulkan data _profiling_ terlebih dahulu dan selanjutnya
@@ -64,7 +64,7 @@ baru menggunakan perkakas `pprof` untuk menyaring dan membuat visualisasi dari
jalur kode yang paling tinggi.
Profil yang disediakan oleh paket
-https://golang.org/pkg/runtime/pprof/[runtime/pprof]:
+https://pkg.go.dev/runtime/pprof/[runtime/pprof^]:
* *cpu*: Profil CPU menentukan bagian dari program yang paling banyak
menghabiskan waktu eksekusi (bukan pada saat menunggu masukan atau
@@ -89,14 +89,13 @@ https://golang.org/pkg/runtime/pprof/[runtime/pprof]:
*Apakah ada jenis profil lain yang dapat digunakan dalam program Go?*
Pada Linux,
-https://perf.wiki.kernel.org/index.php/Tutorial[perkakas perf]
+https://perf.wiki.kernel.org/index.php/Tutorial[perkakas perf^]
dapat digunakan untuk melakukan _profiling_ program Go.
Perkakas `perf` dapat memprofil dan mengulang kode cgo/SWIG dan kernel,
sehingga dapat berguna untuk mengetahui lambatnya kinerja sampai ke
tingkat _kernel_.
Pada macOS,
-https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/[perkakas
-Instruments]
+https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/[perkakas Instruments^]
dapat digunakan untuk melakukan _profiling_ program Go.
*Bisakah memprofil program di tahap production?*
@@ -123,9 +122,9 @@ untuk mengumpulkan hanya satu jenis profil pada satu waktu.
*Apakah cara terbaik untuk memvisualisasikan data profiling?*
Go menyediakan visualisasi dalam bentuk teks, grafik, dan
-http://valgrind.org/docs/manual/cl-manual.html[callgrind] dari data profil
-menggunakan
-{link-google-pprof}[go tool pprof].
+https://valgrind.org/docs/manual/cl-manual.html[callgrind^]
+dari data profil menggunakan
+{link-google-pprof}[go tool pprof^].
Bacalah
link:/blog/profiling-go-programs[Profiling Go programs]
untuk melihat bagaimana cara melakukannya.
@@ -150,7 +149,7 @@ image::/assets/pprof-weblist.png[Daftar fungsi yang paling sering dipanggil
dalam format weblist,800]
Cara lain untuk memvisualisasikan data profil yaitu dengan
-http://www.brendangregg.com/flamegraphs.html[grafik flame].
+https://www.brendangregg.com/flamegraphs.html[grafik flame^].
Grafik _flame_ bisa digunakan dengan berpindah-pindah dari satu _path_ ke
_path_ yang lain, untuk melihat bagian kode tertentu lebih detail.
Program `pprof` mendukung grafik _flame_ ini.
@@ -198,7 +197,7 @@ func main() {
_Tracing_ adalah salah satu cara untuk menganalisis latensi lewat rangkaian
pemanggilan fungsi dalam sebuah rantai siklus.
Go menyediakan paket
-https://godoc.org/golang.org/x/net/trace[golang.org/x/net/trace]
+https://pkg.go.dev/golang.org/x/net/trace[golang.org/x/net/trace^]
sebagai _backend tracing_ yang minimalis dan menyediakan pustaka instrumentasi
dengan _dashboard_ yang sederhana.
Go juga menyediakan pelacak eksekusi untuk melacak _event_ saat program
@@ -253,7 +252,7 @@ dan memberi rentang anotasi.
*Bagaimana cara memperluas pelacakan sampai ke dalam pustaka Go?*
Kita bisa memperluas identifikasi dan tag pelacakan menggunakan
-https://golang.org/pkg/context#Context[context.Context].
+https://pkg.go.dev/context#Context[context.Context^].
Belum ada representasi umum atau kunci pelacakan kanonis dari _header_
pelacakan.
Setiap penyedia perkakas _tracing_ bertanggung jawab menyediakan peralatan
@@ -264,7 +263,7 @@ untuk memperluas ke dalam pustaka Go.
Pustaka bawaan dan _runtime_ memiliki beberapa API untuk memberi notifikasi
pada tingkat paling rendah dari _event_ internal.
Sebagai contohnya,
-https://golang.org/pkg/net/http/httptrace#ClientTrace[httptrace.ClientTrace]
+https://pkg.go.dev/net/http/httptrace#ClientTrace[httptrace.ClientTrace^]
menyediakan API untuk menelusuri _event_ paling bawah dalam sebuah siklus
dari _request_ ke luar.
Proses untuk mendapatkan _event runtime_ paling bawah dari pelacak eksekusi
@@ -287,7 +286,7 @@ berkas _core dump_.
Pengguna Go umumnya menggunakan _debugger_ berikut:
-* https://github.com/derekparker/delve[Delve]: Delve adalah _debugger_ yang
+* https://github.com/derekparker/delve[Delve^]: Delve adalah _debugger_ yang
mendukung konsep _runtime_ dan tipe bawaan.
Delve adalah _debugger_ yang kaya dengan fitur dan tepercaya.
@@ -341,8 +340,9 @@ bagus untuk program yang _crash_ dan untuk menganalisis servis di
_production_.
Untuk mendapatkan berkas ini dari sebuah program dan menggunakan `delve` atau
`gdb` untuk _debugging_, lihat halaman wiki
-https://golang.org/wiki/CoreDumpDebugging[debugging core dump] untuk panduan
-langkah demi langkah.
+https://golang.org/wiki/CoreDumpDebugging[debugging core dump^]
+untuk panduan langkah demi langkah.
+
//}}}
[#runtime]
@@ -356,33 +356,33 @@ Kita dapat memonitor statistik tersebut untuk memahami lebih lanjut tentang
kesehatan dan kinerja dari program.
Beberapa statistik dan status yang sering dimonitor:
-* https://golang.org/pkg/runtime/#ReadMemStats[runtime.ReadMemStats]
+* https://pkg.go.dev/runtime/#ReadMemStats[runtime.ReadMemStats^]
melaporkan grafik yang berkaitan dengan alokasi pada _heap_ dan
_garbage collection_.
Statistik _memory_ berguna untuk memonitor berapa banyak _memory_ yang
proses konsumsi, apakah proses menggunakan _memory_ dengan benar, dan untuk
menangkap adanya kebocoran _memory_.
-* https://golang.org/pkg/runtime/debug/#ReadGCStats[debug.ReadGCStats]
+* https://pkg.go.dev/runtime/debug/#ReadGCStats[debug.ReadGCStats^]
memberikan statistik dari _garbage collection_ (GC).
Sangat berguna untuk melihat berapa banyak sumber daya yang digunakan saat
terjadi GC.
Ia juga melaporkan waktu terjadinya GC dan persentil dari lamanya GC.
-* https://golang.org/pkg/runtime/debug/#Stack[debug.Stack] mengembalikan
- _stack_ yang ada sekarang.
+* https://pkg.go.dev/runtime/debug/#Stack[debug.Stack^]
+ mengembalikan _stack_ yang ada sekarang.
Pelacakan _stack_ bermanfaat untuk melihat berapa banyak goroutine yang
sedang berjalan, melihat apa yang goroutine lakukan, dan melihat apakah ada
yang terkunci atau tidak.
-* https://golang.org/pkg/runtime/debug/#WriteHeapDump[debug.WriteHeapDump]
+* https://pkg.go.dev/runtime/debug/#WriteHeapDump[debug.WriteHeapDump^]
menghentikan eksekusi semua goroutine dan menulis isi _heap_ ke dalam
berkas.
Isi _heap_ adalah potret dari _memory_ yang digunakan proses pada waktu
tertentu.
Ia berisi alokasi objek seperti goroutine, finalisasi, dan lainnya.
-* https://golang.org/pkg/runtime#NumGoroutine[runtime.NumGoroutine]
+* https://pkg.go.dev/runtime#NumGoroutine[runtime.NumGoroutine^]
mengembalikan jumlah goroutine.
Nilai ini dimonitor untuk melihat apakah goroutine benar digunakan, atau
mendeteksi adanya kebocoran _goroutine_.
@@ -418,7 +418,7 @@ Ia memberitahu bahwa kemungkinan ada penguncian pada sumber daya yang dibagi
yang menyebabkan pemampatan.
Lihat
-https://golang.org/cmd/trace/[go tool trace]
+https://golang.org/cmd/trace/[go tool trace^]
untuk mengumpulkan dan menganalisis pelacakan _runtime_.
//}}}
@@ -428,7 +428,8 @@ untuk mengumpulkan dan menganalisis pelacakan _runtime_.
_Runtime_ juga mengeluarkan _event_ dan informasi tertentu bila variabel
lingkungan
-https://golang.org/pkg/runtime/#hdr-Environment_Variables[GODEBUG] diset.
+https://pkg.go.dev/runtime#hdr-Environment_Variables[GODEBUG^]
+diset.
* `GODEBUG=gctrace=1` mencetak _even_ dari _garbage collector_, menghitung
penggunaan _memory_ dan lama berjalannya GC.
diff --git a/_content/doc/effective_go.adoc b/_content/doc/effective_go.adoc
index 3b3fd57..0a1f4e3 100644
--- a/_content/doc/effective_go.adoc
+++ b/_content/doc/effective_go.adoc
@@ -29,21 +29,23 @@ buat dapat dengan mudah dibaca oleh pemrogram Go yang lain.
Dokumen ini memberikan beberapa petunjuk untuk menulis kode Go yang bersih dan
idiomatis.
Ia menggabungkan
-{en-ref-spec}[spesifikasi dari bahasa Go],
-{id-tour}[Tur bahasa Go], dan
-{id-doc-code}[Cara menulis kode Go],
+{en-ref-spec}[spesifikasi dari bahasa Go^],
+{id-tour}[Tur bahasa Go^], dan
+{id-doc-code}[Cara menulis kode Go^],
yang mana sebaiknya harus dibaca terlebih dahulu.
[#examples]
=== Contoh
-https://golang.org/src/[Sumber paket Go] bertujuan untuk menyediakan tidak
+https://golang.org/src/[Sumber paket Go^]
+bertujuan untuk menyediakan tidak
hanya pustaka inti tapi juga sebagai contoh bagaimana menggunakan bahasa ini.
Lebih lanjut lagi, banyak dari paket-paket tersebut memiliki contoh-contoh
kode yang dapat dieksekusi yang dapat dijalankan secara langsung, seperti
-yang https://golang.org/pkg/strings/#example_Map[satu ini] (jika perlu, klik
-pada kata "Example" untuk membukanya).
+yang
+https://pkg.go.dev/strings/#example_Map[satu ini^]
+(jika perlu, klik pada kata "Example" untuk membukanya).
Jika ada pertanyaan tentang bagaimana menyelesaikan suatu masalah
atau bagaimana mengimplementasikan sesuatu, dokumentasi ini, kode, dan
contoh-contoh dalam pustaka dapat menyediakan jawaban, gagasan dan latar
@@ -181,8 +183,9 @@ lainnya seperti +_ini_+ akan menghasilkan keluaran yang sama dan sebaiknya tidak
digunakan.
Salah satu pengaturan yang dimiliki oleh `godoc` yaitu menampilkan teks yang
memiliki identasi dengan fonta baku, cocok untuk menampilkan potongan kode.
-Komentar https://golang.org/pkg/fmt/[paket `fmt`] menggunakan cara ini untuk
-memberikan efek yang bagus.
+Komentar
+https://pkg.go.dev/fmt/[paket `fmt`^]
+menggunakan cara ini untuk memberikan efek yang bagus.
Bergantung kepada konteks, `godoc` bisa saja tidak memformat komentar, jadi
pastikan ia tampak bagus dari awal: gunakan tata tulis dan struktur kalimat
@@ -205,9 +208,9 @@ func Compile(str string) (*Regexp, error) {
Jika setiap komentar dokumentasi dimulai dengan nama item yang dideskripsikan,
kita dapat menggunakan sub perintah
-{en-cmd-go-show}[`doc`]
+{en-cmd-go-show}[`doc`^]
dari perkakas
-{en-cmd-go}[`go`]
+{en-cmd-go}[`go`^]
dan mengambil keluarannya dengan `grep`.
Bayangkan misalnya kita lupa nama fungsi "Compile" tapi ingin mencari fungsi
untuk mengurai _regular expression_, kita tinggal menjalankan perintah
@@ -2850,7 +2853,7 @@ jika _buffer_ -nya penuh, berarti menunggu sampai penerima setidaknya telah
menerima sebuah nilai.
`channel` dengan buffer dapat digunakan untuk
-https://id.wikipedia.org/wiki/Semafor_(pemrograman)[semafor],
+https://id.wikipedia.org/wiki/Semafor_(pemrograman)[semafor^],
misalnya untuk membatasi hasil keluaran.
Pada contoh berikut, permintaan yang masuk dikirim ke sebuah _handle_, yang
mengirim sebuah nilai ke `channel`, memproses permintaan, dan kemudian
@@ -3081,7 +3084,7 @@ func (v Vector) DoAll(u Vector) {
Daripada menggunakan sebuah nilai konstan untuk `numCPU`, kita dapat
menanyakan pada _runtime_ nilai yang sesuai dengan sistem kita.
Fungsi
-https://golang.org/pkg/runtime#NumCPU[runtime.NumCPU]
+https://pkg.go.dev/runtime#NumCPU[runtime.NumCPU^]
mengembalikan jumlah _core_ CPU pada mesin, jadi kita bisa tulis
----
@@ -3089,7 +3092,7 @@ var numCPU = runtime.NumCPU()
----
Ada juga fungsi
-https://golang.org/pkg/runtime#GOMAXPROCS[runtime.GOMAXPROCS],
+https://pkg.go.dev/runtime#GOMAXPROCS[runtime.GOMAXPROCS^],
yang melaporkan (atau menset) jumlah _core_ yang dispesifikasikan oleh
pengguna untuk membatasi jumlah _core_ yang dapat berjalan secara bersamaan
dalam sebuah program Go.
@@ -3112,7 +3115,7 @@ Walaupun fitur konkurensi dari Go dapat mempermudah membentuk komputasi secara
paralel, Go adalah bahasa yang konkuren, bukan paralel, dan tidak semua
permasalahan paralelisasi cocok dengan model Go.
Untuk diskusi mengenai perbedaan dari keduanya, lihat pembicaraan dalam
-{en-blog-concurrency}[blog berikut].
+{en-blog-concurrency}[blog berikut^].
//}}}
[#leaky_buffer]
@@ -3461,8 +3464,8 @@ dalam sebuah URL dalam bentuk HTTP _query_.
Program kita ini menyediakan sebuah antar muka dari layanan tersebut dengan
menyediakan sebuah form data: berikan sebuah teks, web server kita akan akan
memanggil layanan grafik Google untuk menghasilkan sebuah
-https://id.wikipedia.org/wiki/Kode_QR[kode QR], hasil dari enkode teks
-tersebut.
+https://id.wikipedia.org/wiki/Kode_QR[kode QR^],
+hasil dari enkode teks tersebut.
Kode QR tersebut dapat dipindai dengan kamera ponsel pintar kita dan
diinterpretasikan sebagai sebuah URL, mengurangi pengetikan ulang URL ke dalam
_keyboard_ telepon yang kecil.
@@ -3555,12 +3558,12 @@ sendiri sehingga teks aman untuk ditampilkan.
Sisa dari teks _template_ yaitu elemen HTML untuk ditampilkan saat halaman
dimuat.
Jika penjelasan ini terlalu cepat, lihat
-https://golang.org/pkg/html/template/[dokumentasi]
+https://pkg.go.dev/html/template[dokumentasi^]
untuk paket `template` untuk penjelasan yang lebih lengkap.
Untuk mencoba kode di atas, simpanlah ke dalam sebuah berkas berekstensi `.go`
dalam sebuah
-link:/doc/code.html#Workspaces[ruang kerja] dan jalankan,
+link:/doc/code.html#Workspaces[ruang kerja^] dan jalankan,
----
$ go run .
diff --git a/_content/doc/faq/index.adoc b/_content/doc/faq/index.adoc
index 725a3d5..8f12202 100644
--- a/_content/doc/faq/index.adoc
+++ b/_content/doc/faq/index.adoc
@@ -1,6 +1,8 @@
= Tanya Jawab
:toc:
:talks-go-at-google: https://talks.golang.org/2012/splash.article
+:sectanchors:
+:sectlinks:
[#Origins]
== Asal mula
@@ -35,8 +37,7 @@ yang konkuren, _garbage collection_, atau setidaknya suatu model manajemen
_memory_ yang otomatis dan aman setidaknya dibutuhkan.
Pertimbangan-pertimbangan ini mengarah ke
-https://commandcenter.blogspot.com/2017/09/go-ten-years-and-climbing.html[beberapa
-diskusi lanjutan]
+https://commandcenter.blogspot.com/2017/09/go-ten-years-and-climbing.html[beberapa diskusi lanjutan^]
yang menyebabkan lahirnya Go, pertama sebagai kumpulan ide dan keinginan,
kemudian sebagai sebuah bahasa.
Tujuan secara keseluruhan yaitu supaya Go lebih membantu pemrogram dengan
@@ -85,24 +86,23 @@ Kesuksesan Go telah melampau ekspektasi kita.
//{{{
Maskot dan logo dirancang oleh
-https://reneefrench.blogspot.com/[Renée French],
+https://reneefrench.blogspot.com/[Renée French^],
yang juga merancang
-https://9p.io/plan9/glenda.html[Glenda],
+https://9p.io/plan9/glenda.html[Glenda^],
kelincinya Plan 9.
-https://blog.golang.org/gopher[Sebuah blog]
+https://blog.golang.org/gopher[Sebuah blog^]
tentang gopher menjelaskan bagaimana ia diturunkan dari rancangan bajunya
-https://wfmu.org/[WFMU]
+https://wfmu.org/[WFMU^]
yang ia buat beberapa tahun lalu.
Logo dan maskot berlisensikan
-https://creativecommons.org/licenses/by/3.0/[Creative Commons Attribution
-3.0].
+https://creativecommons.org/licenses/by/3.0/[Creative Commons Attribution 3.0^].
Gopher memiliki
-https://golang.org/doc/gopher/modelsheet.jpg[lembar model]
+https://golang.org/doc/gopher/modelsheet.jpg[lembar model^]
yang mengilustrasikan karakteristiknya dan bagaimana merepresentasikannya
dengan benar.
Lembar model tersebut pertama kali diperlihatkan dalam sebuah
-https://www.youtube.com/watch?v=4rw_B4yY69k[presentasi]
+https://www.youtube.com/watch?v=4rw_B4yY69k[presentasi^]
oleh Renée pada Gophercon 2016.
Maskot tersebut memiliki fitur unik;
ia adalah _gopher_ -nya Go, bukan hanya _gopher_ yang dulu.
@@ -121,7 +121,7 @@ Misalnya, tag pada Twitter untuk bahasa Go adalah "#golang".
Nama dari bahasa itu sendiri adalah Go saja.
Sebagai catatan: Walaupun
-https://blog.golang.org/go-brand[logo resmi]
+https://blog.golang.org/go-brand[logo resmi^]
menggunakan dua huruf besar, nama bahasa tetap ditulis Go, bukan GO.
//}}}
@@ -231,11 +231,11 @@ beberapa hal digabungkan.
Ya.
Go digunakan secara luas dalam _production_ di Google.
Salah satu contoh sederhana yaitu _server_ dibalik
-https://golang.org/[golang.org].
+https://golang.org/[golang.org^].
Ia adalah _server_ dokumentasi dari
-https://golang.org/cmd/godoc[godoc]
+https://golang.org/cmd/godoc[godoc^]
yang berjalan dalam sebuah konfigurasi _production_ di
-https://developers.google.com/appengine/[Google App Engine].
+https://developers.google.com/appengine/[Google App Engine^].
Contoh yang lebih signifikan yaitu _server_ unduh Google,
`dl.google.com`, yang melayani pengunduhan program Chrome dan berbagai paket
@@ -243,8 +243,7 @@ seperti dari `apt-get`.
Go bukan satu-satunya bahasa yang digunakan di Google, jauh dari itu, tapi ia
merupakan bahasa penting untuk sejumlah wilayah termasuk
-https://talks.golang.org/2013/go-sreops.slide[Site Reliability engineering
-(SRE)]
+https://talks.golang.org/2013/go-sreops.slide[Site Reliability engineering (SRE)^]
dan pemrosesan data berukuran besar.
//}}}
@@ -259,12 +258,12 @@ Beberapa proyek infrastruktur _cloud_ besar yang ditulis dengan Go adalah
Docker dan Kubernetes, namun masih banyak yang lainnya.
Tidak hanya pada _cloud_ saja.
-https://github.com/golang/go/wiki/GoUsers[Halaman pengguna]
+https://github.com/golang/go/wiki/GoUsers[Halaman pengguna^]
pada Go Wiki, yang cukup sering diperbarui, berisi daftar dari beberapa
perusahaan yang menggunakan Go.
Go Wiki juga memiliki halaman tentang
-https://github.com/golang/go/wiki/SuccessStories[cerita-cerita sukses]
+https://github.com/golang/go/wiki/SuccessStories[cerita-cerita sukses^]
perusahaan dan proyek yang menggunakan Go.
//}}}
@@ -291,7 +290,7 @@ Diantaranya `gc`, _compiler_ bawaan, `gccgo` yang menggunakan GCC, dan
`gc` menggunakan konvensi pemanggilan dan _linker_ yang berbeda dari C dan
oleh karena itu tidak bisa dipanggil langsung dari program C, atau sebaliknya.
Program
-https://golang.org/cmd/cgo/[cgo]
+link:/cmd/cgo/[cgo^]
menyediakan mekanisme untuk sebuah "antarmuka fungsi asing"
(_foreign function interface_) untuk membolehkan pemanggilan pustaka C secara
aman dalam kode Go.
@@ -329,7 +328,7 @@ lebih banyak lagi.
Proyek sumber terbuka lain menyediakan plugin _compiler_ dan pustaka yang
dibutuhkan.
Ia tersedia di
-https://github.com/golang/protobuf[github.com/golang/protobuf].
+https://github.com/golang/protobuf[github.com/golang/protobuf^].
//}}}
@@ -342,7 +341,7 @@ Kami mendorong pengembang untuk membuat situs Bahasa Go dengan bahasanya
sendiri.
Namun, bila anda ingin menambahkan logo atau _brand_ Google ke situs anda
(yang mana tidak ada dalam situs
-https://golang.org/[golang.org]),
+https://golang.org/[golang.org^]),
anda harus patuh pada aturan di
https://www.google.com/permissions/guidelines.html.
@@ -397,8 +396,8 @@ Hal-hal apa saja yang harus dilakukan saat ini masih menjadi topik diskusi
yang aktif, dan versi selanjutnya dari bahasa Go bisa saja lebih terbuka dalam
definisi dari pengidentifikasi.
Misalnya, ia mungkin mengadopsi
-http://unicode.org/reports/tr31/[rekomendasi] untuk pengidentifikasi dari
-organisasi Unicode.
+https://unicode.org/reports/tr31/[rekomendasi^]
+untuk pengidentifikasi dari organisasi Unicode.
Apapun yang terjadi, ia harus kompatibel dan menjaga (atau mungkin
mengembangkan) bagaimana huruf menentukan visibilitas dari pengidentifikasi,
yang mana merupakan fitur favorit dari Go.
@@ -441,7 +440,7 @@ programmer butuh itu.
Go ditujukan sebagai bahasa untuk menulis program _server_ yang mudah untuk
dipelihara sepanjang waktu.
(Lihat
-https://talks.golang.org/2012/splash.article[artikel]
+https://talks.golang.org/2012/splash.article[artikel^]
berikut untuk latar belakang lebih lanjut.)
Rancangannya berkonsentrasi pada hal-hal seperti mudah di- _scale_, mudah
dibaca, dan konkurensi.
@@ -464,7 +463,7 @@ generik, walau sedikit kurang mulus.
Topik generik ini tetap dibuka.
Untuk melihat percobaan yang gagal merancang solusi generik yang bagus pada
Go, lihat
-https://golang.org/issue/15292[proposal ini].
+https://golang.org/issue/15292[proposal ini^].
//}}}
@@ -480,8 +479,8 @@ seperti gagal membuka berkas, sebagai sebuah eksepsi.
Go menggunakan pendekatan yang berbeda.
Untuk penanganan eror biasa, kembalian dengan multi nilai pada Go membuatnya
mudah untuk melaporkan kesalahan tanpa membebani nilai kembalian.
-https://golang.org/doc/articles/error_handling.html[Tipe error kanonis
-digabungkan dengan fitur Go lainnya],
+link:/blog/error-handling-and-go[Tipe error kanonis^]
+digabungkan dengan fitur Go lainnya,
membuat penanganan eror mudah namun cukup berbeda dengan bahasa lainnya.
Go juga memiliki beberapa fungsi bawaan untuk memberi sinyal dan pemulihan
@@ -492,11 +491,10 @@ bila digunakan dengan baik, bisa menghasilkan sebuah kode penanganan eror yang
bersih.
Lihat artikel
-https://golang.org/doc/articles/defer_panic_recover.html[Defer Panic dan
-Recover (bahasa Inggris)]
+link:/blog/defer-panic-and-recover[Defer Panic dan Recover^]
untuk lebih rinci.
Blog tentang
-https://blog.golang.org/errors-are-values[Eror adalah nilai (bahasa Inggris)]
+link:/blog/errors-are-values[Eror adalah nilai^]
menjelaskan salah satu pendekatan untuk menangani eror dengan bersih pada Go
dengan mendemonstrasikan bahwa, secara eror hanyalah nilai, fitur-fitur yang
ada dapat digunakan untuk menangani eror.
@@ -533,7 +531,7 @@ pendekatan yang berbeda.
Pemrograman multi _threading_ dan konkurensi selama ini memiliki reputasi
sebagai sesuatu yang rumit.
Kami percaya hal ini disebabkan karena rancangan yang kompleks seperti
-https://en.wikipedia.org/wiki/POSIX_Threads[pthreads]
+https://en.wikipedia.org/wiki/POSIX_Threads[pthreads^]
dan sebagian karena terlalu menekankan rincian level-bawah seperti _mutex_,
variabel kondisi, dan pembatasan _memory_.
Antarmuka yang lebih tinggi membuat kode lebih sederhana, walaupun tetap masih
@@ -620,13 +618,13 @@ konkuren.
Orang terkadang menyarankan perbaikan terhadap
bahasa
--
-https://groups.google.com/group/golang-nuts[milis]
+https://groups.google.com/group/golang-nuts[milis^]
banyak berisi sejarah diskusi ini--namun sangat sedikit dari perubahan
tersebut yang diterima.
Walaupun Go adalah proyek sumber terbuka, bahasa dan pustakanya dilindungi
oleh
-https://golang.org/doc/go1compat.html[perjanjian kompatibilitas]
+https://golang.org/doc/go1compat.html[perjanjian kompatibilitas^]
yang mencegah perubahan yang dapat membuat program tidak dapat di- _compile_,
setidaknya pada tingkat sumber kode (program mungkin harus di _compile_ ulang
sewaktu-waktu).
@@ -756,7 +754,7 @@ _method-method_ pada _interface_ tersebut, cukup itu saja.
Properti ini membolehkan _interface_ didefinisikan dan digunakan tanpa
harus mengubah kode yang ada.
Ia membolehkan semacam
-https://en.wikipedia.org/wiki/Structural_type_system[penulisan struktural]
+https://en.wikipedia.org/wiki/Structural_type_system[penulisan struktural^]
yang mempromosikan pemisahan antara kebutuhan-kebutuhan dan meningkatkan
penggunaan ulang pada kode, dan mempermudah membangun pola-pola yang
muncul pada saat membangun kode.
@@ -799,8 +797,7 @@ type Fooer interface {
Sebuah tipe harus mengimplementasikan _method_ `ImplementsFooer` supaya bisa
menjadi `Fooer`, dengan jelas mendokumentasikan fakta tersebut dan
memunculkannya pada
-https://golang.org/cmd/go/#hdr-Show_documentation_for_package_or_symbol[go
-doc].
+link:/cmd/go#hdr-Show_documentation_for_package_or_symbol[go doc^].
----
type Bar struct{}
@@ -979,16 +976,16 @@ Fungsi yang mengembalikan `error` sebaiknya selalu menggunakan tipe `error`
dalam _signature_ -nya (seperti contoh di atas) bukan dengan tipe konkret
seperti `*MyError`, untuk menjamin `error` dibuat dengan benar.
Sebagai contoh,
-https://golang.org/pkg/os/#Open[os.Open]
+https://pkg.go.dev/os#Open[os.Open^]
mengembalikan `error` walaupun, jika tidak `nil`, ia selalu bertipe konkret
-https://golang.org/pkg/os/#PathError[*os.PathError].
+https://pkg.go.dev/os#PathError[*os.PathError^].
Situasi yang sama seperti yang dijelaskan di sini dapat muncul kapan pun
_interface_ digunakan.
Cukup diingat, jika nilai konkret disimpan dalam _interface_, maka _interface_
tersebut tidak akan bernilai `nil`.
Untuk informasi lebih lanjut, lihat
-https://golang.org/doc/articles/laws_of_reflection.html[Hukum refleksi].
+link:/blog/laws-of-reflection[Hukum refleksi^].
//}}}
@@ -1094,7 +1091,7 @@ untuk eksplisit.
Walaupun Go ketat dalam konversi antara variabel dari tipe numerik yang
berbeda, kontansta lebih fleksibel.
Konstanta harfiah seperti `23`, `3.14159`, dan
-https://golang.org/pkg/math/#pkg-constants[math.Pi]
+https://pkg.go.dev/math#pkg-constants[math.Pi^]
menggunakan ruang yang sama, dengan presisi yang berubah dan tanpa _overflow_
atau _underflow_.
Misalnya, nilai `math.Pi` dispesifikasikan memakai 63 bit dalam sumber kode,
@@ -1117,7 +1114,7 @@ tanpa ada keluhan dari _compiler_ karena angka `2` bisa dikonversi secara aman
dan akurat ke `float64` untuk pemanggilan `math.Sqrt`.
Sebuah blog berjudul
-https://blog.golang.org/constants[Konstanta (Inggris)]
+https://blog.golang.org/constants[Konstanta (Inggris)^]
mengeksplorasi topik ini lebih rinci.
//}}}
@@ -1191,20 +1188,20 @@ Sebuah program, `godoc`, ditulis dengan Go, mengekstrak dokumentasi paket dari
sumber kode dan membuatnya dapat dibukan dalam sebuah halaman web dengan
tautan ke deklarasi, berkas, dan lainnya.
Salah satu instansinya berjalan di
-https://golang.org/pkg/[golang.org/pkg].
+https://pkg.go.dev/[pkg.go.dev^].
Pada kenyataannya, `godoc` mengimplementasikan keseluruhan situs
-https://golang.org/[golang.org].
+https://golang.org/[golang.org^].
-Instansi dari `godoc` bisa dikonfigurasi untuk menyediakan analisis interaktif
-yang kaya dari simbol dalam program;
-rinciannya ada dalam daftar
-https://golang.org/lib/godoc/analysis/help.html[berikut].
+Instansi dari `godoc` bisa di-konfigurasi untuk menyediakan analisis
+interaktif yang kaya dari simbol dalam program;
+detail-nya ada dalam daftar
+https://golang.org/lib/godoc/analysis/help.html[berikut^].
Untuk mengakses dokumentasi dari baris perintah, perkakas
-https://golang.org/pkg/cmd/go/[go]
+link:/cmd/go[go^]
memiliki sub-perintah
-https://golang.org/pkg/cmd/go/#hdr-Show_documentation_for_package_or_symbol[doc]
-yang menyediakan antarmuka tekstual dari informasi yang sama.
+link:/cmd/go#hdr-Show_documentation_for_package_or_symbol[doc^]
+yang menyediakan antarmuka teks dari informasi yang sama.
//}}}
@@ -1218,18 +1215,18 @@ cukup dikenal.
Go telah menetapkan konvensi untuk membantu melakukan penamaan, susunan, dan
pengorganisasian berkas.
Dokumentasi
-link:/doc/effective_go.html[Efektif Go]
+link:/doc/effective_go[Efektif Go^]
memiliki beberapa saran mengenai topik ini.
Lebih lanjut, program `gofmt` bertujuan untuk mencetak sumber kode dengan
aturan-aturan yang baku;
-ia menggantikan aturan tertulis yang memboleh interpretasi.
+ia menggantikan aturan tertulis yang membolehkan interpretasi.
Semua kode Go dalam repositori, dan hampir mayoritas dalam dunia _open
source_, telah dijalankan lewat `gofmt`.
Dokumen berjudul
-https://golang.org/s/comments[Komentar Pemeriksaan Kode Go]
-berisi kumpulan esai ringkas tentang rincian idiom dari Go yang terkadang
-luput oleh para pemrogram.
+https://golang.org/s/comments[Komentar Pemeriksaan Kode Go^]
+berisi kumpulan esai ringkas tentang idiom dari Go yang terkadang luput oleh
+para pemprogram.
Dokumen tersebut adalah referensi yang membantu bagi yang ingin memeriksa kode
untuk proyek Go.
@@ -1240,11 +1237,11 @@ untuk proyek Go.
//{{{
Sumber pustaka ada di dalam direktori `src` dari repositori.
-Jika anda ingin membuat perubahan yang signifikan, mohon diskusikan terlebih
+Jika anda ingin membuat perubahan yang signifikan, mohon didiskusikan terlebih
dahulu di milis sebelum memulai.
Lihat dokumentasi
-https://golang.org/doc/contribute.html[Berkontribusi pada proyek Go]
+https://golang.org/doc/contribute.html[Berkontribusi pada proyek Go^]
untuk informasi lebih lanjut.
//}}}
@@ -1270,8 +1267,7 @@ machine github.com login _USERNAME_ password _APIKEY_
----
Untuk akun Github, kata kunci (_password_) bisa berupa
-https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/[token
-akses personal].
+https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/[token akses personal^].
`Git` juga bisa dikonfigurasi menggunakan SSH bukan HTTPS untuk URL yang cocok
dengan prefiks tertentu.
@@ -1299,10 +1295,9 @@ untuk beragam situasi yang cocok bagi semua pengguna Go.
Rilis Go 1.11 menyediakan dukungan eksperimental untuk paket dengan versi
terhadap perintah `go`, dalam bentuk modul.
Untuk informasi lebih lanjut, lihat
-https://golang.org/doc/go1.11#modules[catatan rilis Go 1.11]
+https://golang.org/doc/go1.11#modules[catatan rilis Go 1.11^]
dan
-https://golang.org/cmd/go#hdr-Modules__module_versions__and_more[dokumentasi
-perintah go].
+link:/cmd/go#hdr-Modules__module_versions__and_more[dokumentasi perintah go^].
Bagaimanapun teknologi manajemen paketnya, "go get" dan perkakas Go lainnya
menyediakan isolasi paket dengan path import yang berbeda.
@@ -1312,7 +1307,8 @@ Hal ini mengarah pada beberapa anjuran untuk penulis paket dan pengguna paket.
Paket yang ditujukan untuk digunakan secara umum sebaiknya mencoba untuk
menjaga kompatibilitas selama berkembang.
-https://golang.org/doc/go1compat.html[pedoman kompatibilitas Go 1] adalah
+https://golang.org/doc/go1compat.html[pedoman kompatibilitas Go 1^]
+adalah
sebuah referensi yang baik: jangan menghapus nama-nama yang diekspor,
menganjurkan komposit dengan tag, dan lainnya.
Jika fungsionalitas berbeda dibutuhkan, tambahkan nama baru bukan dengan
@@ -1328,7 +1324,8 @@ perkakas `go` lewat sebuah teknik yang disebut "vendoring".
Hal ini mengikutkan penyimpanan semua salinan dependensi dibawah path import
yang mengidentifikasi mereka sebagai salinan lokal.
Lihat
-https://golang.org/s/go15vendor[dokumen rancangan] untuk lebih rinci.
+https://golang.org/s/go15vendor[dokumen rancangan^]
+untuk lebih rinci.
//}}}
@@ -1378,8 +1375,7 @@ Kesalahan yang sering terjadi yaitu mengirim pointer ke sebuah nilai
_interface_ terhadap fungsi yang mengharapkan sebuah _interface_.
_compiler_ akan melaporkan kesalahan ini, namun situasi ini terkadang juga
membingungkan, karena terkadang
-link:/doc/faq#different_method_sets[pointer diperlukan untuk memenuhi sebuah
-interface].
+link:#different_method_sets[pointer diperlukan untuk memenuhi sebuah interface].
Intinya adalah pointer ke tipe kongkret akan memenuhi sebuah _interface_,
namun pointer ke sebuah _interface_ tidak akan pernah memenuhi _interface_.
@@ -1477,8 +1473,8 @@ Singkat kata: `new` mengalokasikan _memory_, sementara `make` menginisialisasi
tipe slice, map, dan channel.
Lihat
-link:/doc/effective_go.html#allocation_new[bagian terkait pada Efektif Go]
-untuk lebih rincinya.
+link:/doc/effective_go#allocation_new[bagian terkait pada Efektif Go^]
+untuk lebih detail.
//}}}
@@ -1562,12 +1558,12 @@ perintah `top` pada Unix dan perhatikan kolom `RES` (Linux) atau `RSIZE`
//{{{
Penjelasan dari operasi _atomic_ dalam Go dapat ditemukan dalam dokumen
-link:/ref/mem[Model memori pada Go].
+link:/ref/mem[Model memori pada Go^].
Sinkronisasi tingkat-rendah dan primitif _atomic_ tersedia dalam paket
-https://golang.org/pkg/sync[sync]
+https://pkg.go.dev/sync[sync^]
dan
-https://golang.org/pkg/sync/atomic[sync/atomic].
+https://pkg.go.dev/sync/atomic[sync/atomic^].
Paket-paket tersebut cukup bagus untuk pekerjaan sederhana seperti
penghitungan referensi (_reference counts_) atau menjamin mutual eksklusi
(_mutual exclusion_) dalam skala kecil.
@@ -1577,7 +1573,7 @@ mendukungnya dengan pendekatan lewat goroutine dan channel.
Misalnya, kita dapat menyusun program supaya hanya satu goroutine yang
bertanggung jawab untuk suatu data tertentu.
Pendekatan ini diringkas dalam
-https://www.youtube.com/watch?v=PAAkCSZUG1c[Pepatah Go (Video - Inggris)].
+https://www.youtube.com/watch?v=PAAkCSZUG1c[Pepatah Go (Video - Inggris)^].
____
"Jangan berkomunikasi dengan berbagi _memory_. Namun, bagilah _memory_ dengan
@@ -1585,10 +1581,9 @@ berkomunikasi"
____
Lihat contoh kode
-https://golang.org/doc/codewalk/sharemem/[Berbagi Memory dengan Berkomunikasi]
+https://golang.org/doc/codewalk/sharemem/[Berbagi Memory dengan Berkomunikasi^]
dan
-https://blog.golang.org/2010/07/share-memory-by-communicating.html[artikel
-terkait]
+https://blog.golang.org/2010/07/share-memory-by-communicating.html[artikel terkait^]
untuk diskusi lebih rinci mengenai konsep ini.
Program besar yang konkuren biasanya menggunakan kedua metode ini.
@@ -1616,15 +1611,14 @@ Hal ini disebabkan karena pengiriman data antara _thread_ mengikutkan
perpindahan konteks (_context switching_), yang memiliki biaya yang
signifikan, dan biaya tersebut dapat bertambah dengan menambah jumlah CPU.
Misalnya,
-link:/ref/spec#An_example_package[contoh penyaringan bilangan prima]
+link:/ref/spec#An_example_package[contoh penyaringan bilangan prima^]
dalam spesifikasi Go tidak memiliki performansi paralelisme yang signifikan
walaupun ia menjalankan banyak goroutine;
menambah jumlah _thread_ (CPU) akan lebih memungkinkan memperlambatnya
daripada mempercepatnya.
Untuk rincian lanjut tentang topik ini lihatlah wicara yang berjudul
-https://blog.golang.org/2013/01/concurrency-is-not-parallelism.html[Konkurensi
-bukanlah Paralelisme (Inggris)].
+https://blog.golang.org/2013/01/concurrency-is-not-parallelism.html[Konkurensi bukanlah Paralelisme (Inggris)^].
//}}}
@@ -1639,7 +1633,7 @@ Program yang berpotensi untuk dieksekusi paralel akan secara bawaan dieksekusi
secara paralel pada mesin dengan multipel CPU.
Untuk mengubah jumlah CPU yang digunakan, atur nilai variabel lingkungan atau
gunakan
-https://golang.org/pkg/runtime/#GOMAXPROCS[fungsi]
+https://pkg.go.dev/runtime#GOMAXPROCS[fungsi^]
dengan nama yang sama dari paket runtime untuk mengatur supaya _runtime_
menggunakan jumlah _thread_ yang berbeda.
Mensetnya dengan `1` berarti mengindahkan kemungkinan paralelisme, memaksa
@@ -1707,7 +1701,7 @@ fleksibel.
//{{{
Seperti yang ditulis dalam
-https://golang.org/ref/spec#Types[spesifikasi Go],
+link:/ref/spec#Types[spesifikasi Go^],
kumpulan method dari tipe `T` terdiri dari semua method yang penerimanya
adalah `T`, sementara tipe dengan pointer `*T` mengikutkan semua method yang
penerimanya adalah `*T` atau `T`.
@@ -1724,7 +1718,7 @@ Bahkan apabila _compiler_ dapat mengambil alamat dari sebuah nilai untuk
dikirim ke method, jika method tersebut mengubah nilai maka perubahannya akan
hilang pada sisi pemanggil.
Sebagai contoh, jika method `Write` dari
-https://golang.org/pkg/bytes/#Buffer[bytes.Buffer]
+https://pkg.go.dev/bytes#Buffer[bytes.Buffer^]
menggunakan penerima dengan nilai bukan pointer, kode berikut:
----
@@ -1771,7 +1765,7 @@ variabel `v` yang sama, sehingga setiap _closure_ berbagi variabel yang sama.
Saat _closure_ dijalankan, ia akan mencetak nilai dari `v` saat `fmt.Println`
dieksekusi, namun `v` bisa saja telah diubah sejak goroutine diluncurkan.
Untuk membantu mendeteksi permasalahan seperti ini, gunakan
-https://golang.org/cmd/go/#hdr-Run_go_tool_vet_on_packages[go vet].
+link:/cmd/go#hdr-Run_go_tool_vet_on_packages[go vet^].
Untuk menempatkan nilai dari `v` ke setiap _closure_ saat dijalankan, kita
harus mengubah pengulangan supaya membuat variabel baru untuk setiap iterasi.
@@ -1875,11 +1869,11 @@ Program tersebut akan mencari fungsi yang berawalan `Test`, membuat binari
tes, dan menjalankannya.
Lihat dokumentasi
-link:/doc/code.html[Cara Menulis Kode Go],
+link:/doc/code.html[Cara Menulis Kode Go^],
paket
-https://golang.org/pkg/testing/[testing]
+https://pkg.go.dev/testing[testing^]
dan perintah
-https://golang.org/cmd/go/#hdr-Test_packages[go test]
+link:/cmd/go#hdr-Test_packages[go test^]
untuk lebih rinci.
//}}}
@@ -1889,7 +1883,7 @@ untuk lebih rinci.
//{{{
Paket standar
-https://golang.org/pkg/testing/[testing]
+https://pkg.go.dev/testing[testing^]
pada Go memudahkan menulis unit tes, namun ia tidak memiliki fitur yang pada
kerangka bahasa lain seperti fungsi untuk _assert_.
Seperti yang telah dijelaskan pada
@@ -1922,8 +1916,7 @@ struktur data (Go mendukung struktur data anonim).
Penulisan tes dan pesan eror yang baik nantinya akan diamortisasi oleh
banyaknya kasus-kasus pengujian.
Pustaka standar Go mengandung banyak contoh unit tes, seperti
-https://golang.org/src/fmt/fmt_test.go[pengujian pemformatan pada paket
-`fmt`].
+https://golang.org/src/fmt/fmt_test.go[pengujian pemformatan pada paket `fmt`^].
///}}}
@@ -1946,18 +1939,21 @@ Penambahkan pada pustaka standar biasanya sangat jarang dan syarat supaya
dapat ditambah biasanya cukup tinggi.
Kode yang dimasukan ke dalam pustaka standar membutuhkan biaya pemeliharaan
(bahkan ditanggung oleh selain penulis awalnya), subjek terhadap
-https://golang.org/doc/go1compat.html[perjanjian kompatibilitas Go 1]
+https://golang.org/doc/go1compat.html[perjanjian kompatibilitas Go 1^]
(menahan perbaikan dari kesalahan dalam API), dan juga subjek terhadap
-https://golang.org/s/releasesched[jadwal rilis] Go,
+https://golang.org/s/releasesched[jadwal rilis^]
+Go,
yang mencegah perbaikan _bug_ tersedia secara langsung terhadap pengguna
dengan cepat.
Umumnya kode yang baru sebaiknya ada di luar pustaka standar dan dapat diakses
-lewat https://golang.org/cmd/go/[perkakas go] dengan perintah `go get`.
+lewat
+link:/cmd/go[perkakas go^]
+dengan perintah `go get`.
Kode tersebut memiliki pemelihara, siklus rilis, dan jaminan kompatibilitasnya
sendiri.
Pengguna Go dapat mencari paket dan membaca dokumentasinya di
-https://godoc.org/[godoc.org].
+https://godoc.org/[godoc.org^].
Walaupun sebenarnya ada beberapa bagian dalam pustaka standar yang seharusnya
tidak diikutkan, seperti `log/syslog`, kami terus memelihara semua yang ada
@@ -1986,18 +1982,19 @@ Namun beberapa hal telah berkembang dan sejak rilis Go 1.5, _compiler_
tersebut sudah dalam bentuk program Go.
_Compiler_ tersebut dikonversi dari C ke Go menggunakan perangkat translasi
otomatis, seperti yang dijelaskan dalam
-https://golang.org/s/go13compiler[dokumen rancangan]
+https://golang.org/s/go13compiler[dokumen rancangan^]
dan
-https://talks.golang.org/2015/gogo.slide#1[wicara] berikut.
+https://talks.golang.org/2015/gogo.slide#1[wicara^]
+berikut.
Sekarang _compiler_ bersifat "self-hosting", yang artinya dibutuhkan untuk
mengatasi permasalahan _bootstrapping_.
Solusinya yaitu dengan memiliki lingkungan Go yang telah terpasang, seperti
halnya seperti pada lingkungan C yang siap digunakan.
Sejarah dan dokumentasi untuk cara membangun lingkungan Go yang baru dari
sumber dijelaskan di
-https://golang.org/s/go15bootstrap[sini]
+https://golang.org/s/go15bootstrap[sini^]
dan di
-link:/doc/install/source[sini].
+link:/doc/install/source[sini^].
`Gc` ditulis dalam Go menggunakan _recursive descent parser_ dan menggunakan
kostum _loader_, yang juga ditulis dengan Go berdasarkan loader pada Plan 9,
@@ -2010,11 +2007,11 @@ Alasan utama lainnya, dengan LLVM akan membuat lebih sukar untuk melakukan
perubahan pada tingkat ABI (_Application Binary Interface_) dan sekitarnya,
seperti manajemen _stack_, yang dibutuhkan oleh Go namun bukan bagian dari
standar C.
-https://go.googlesource.com/gollvm/[Implementasi LLVM] yang baru mulai
-merintis hal tersebut sekarang.
+https://go.googlesource.com/gollvm/[Implementasi LLVM^]
+yang baru mulai merintis hal tersebut sekarang.
_Compiler_ `gccgo` adalah antar muka yang ditulis dalam bahasa C++ dengan
-_recursive descent parser_ digabung dengan GCC sebagai _back end_ nya.
+_recursive descent parser_ digabung dengan GCC sebagai _back end_-nya.
Go ternyata menjadi bahasa yang bagus untuk mengimplementasikan _compiler_ Go,
walaupun itu bukan tujuan awalnya.
@@ -2027,9 +2024,9 @@ kita harapkan.
Walaupun `gc` belum menggunakannya, _parser_ dan _lexer_ untuk Go tersedia
dalam paket
-https://golang.org/pkg/go/[go]
+https://pkg.go.dev/go/[go^]
dan juga ada paket untuk
-https://golang.org/pkg/go/types[pemeriksaan tipe].
+https://pkg.go.dev/go/types[pemeriksaan tipe^].
//}}}
@@ -2118,7 +2115,7 @@ func main() {
----
Sekarang, kebanyakan pemrogram Go menggunakan perkakas
-https://godoc.org/golang.org/x/tools/cmd/goimports[goimports],
+https://pkg.go.dev/golang.org/x/tools/cmd/goimports[goimports^],
yang secara otomatis menulis ulang sumber kode supaya memiliki import yang
benar, menghapus permasalahan import yang tidak terpakai.
Program ini dengan mudah dapat disambungkan ke _editor_ supaya dijalankan
@@ -2139,7 +2136,7 @@ Jika anda baru saja memasang distribusi Go dan sistem melaporkan bahwa ia
terinfeksi, itu adalah kesalahan.
Untuk lebih teliti, kita bisa memverifikasi berkas yang diunduh dengan
membandingkan _checksum_ yang ada pada
-https://golang.org/dl/[halaman unduhan].
+https://golang.org/dl/[halaman unduhan^].
Jika anda percaya bahwa laporan tersebut salah, silahkan laporkan sebagai
_bug_ ke pembuat anti-virus.
@@ -2158,19 +2155,19 @@ Mungkin suatu saat nanti anti-virus akan belajar untuk memahami program Go.
Salah satu tujuan dari rancangan Go yaitu mendekati performansi C dari program
yang sama, namun beberapa _benchmark_ Go berjalan cukup buruk, termasuk
beberapa _benchmark_ dalam
-https://go.googlesource.com/exp/+/master/shootout/[golang.org/x/exp/shootout].
+https://go.googlesource.com/exp/+/master/shootout/[golang.org/x/exp/shootout^].
Benchmark yang paling lambat bergantung kepada pustaka yang mana versi
performansi yang lebih baik tidak tersedia pada Go.
Misalnya,
-https://go.googlesource.com/exp/+/master/shootout/pidigits.go[pidigits.go]
+https://go.googlesource.com/exp/+/master/shootout/pidigits.go[pidigits.go^]
bergantung pada paket multi-presisi `math`, dan versi C -nya menggunakan
-https://gmplib.org/[GMP]
+https://gmplib.org/[GMP^]
(yang ditulis dengan _assembler_ dan dioptimisasi).
_Benchmark_ yang bergantung pada ekspresi regular (misalnya,
-https://go.googlesource.com/exp/+/master/shootout/regex-dna.go[regex-dna.go]
+https://go.googlesource.com/exp/+/master/shootout/regex-dna.go[regex-dna.go^]
)
membandingkan
-https://golang.org/pkg/regexp[paket regex]
+https://pkg.go.dev/regexp[paket regex^]
natif dari Go dengan pustaka regex yang lebih matang dan sangat dioptimasi
seperti PCRE.
@@ -2178,7 +2175,7 @@ _Benchmark game_ dimenangkan oleh penyetelan lebih lanjut (dari kode yang di
_benchmark_) dan versi Go dari kebanyakan _benchmark_ membutuhkan perhatian
tambahan.
Jika anda membandingkan program C dan Go (misalnya
-https://go.googlesource.com/exp/+/master/shootout/reverse-complement.go[reverse-complement.go]),
+https://go.googlesource.com/exp/+/master/shootout/reverse-complement.go[reverse-complement.go^]),
kita akan melihat kedua bahasa saling berdekatan performansinya daripada yang
diindikasikan oleh _benchmark game_.
@@ -2191,8 +2188,7 @@ Pada kasus lainnya, Go seringkali sangat kompetitif.
Telah ada beberapa peningkatan pada banyak program selama bahasa dan perkakas
dikembangkan.
Lihat blog tentang
-https://blog.golang.org/2011/06/profiling-go-programs.html[profiling program
-Go]
+link:/blog/profiling-go-programs[profiling program Go^]
untuk contoh yang informatif.
//}}}
@@ -2264,8 +2260,8 @@ tipe-tipe bukan saja pada tata-bahasa ekspresi;
kata kunci seperti `func` dan `chan` membuat hal-hal tertentu lebih jelas.
Lihat artikel tentang
-https://golang.org/doc/articles/gos_declaration_syntax.html[Sintaks Deklarasi
-Go (Inggris)] untuk lebih rinci.
+https://golang.org/doc/articles/gos_declaration_syntax.html[Sintaks Deklarasi Go (Inggris)^]
+untuk lebih rinci.
//}}}
@@ -2321,7 +2317,7 @@ Beberapa orang memperdebatkan bahwa _lexer_ seharusnya melakukan _lookahead_
supaya kurawal buka bisa ada dibaris selanjutnya.
Kami tidak setuju.
Secara kode Go ditujukan untuk diformat secara otomatis oleh
-https://golang.org/cmd/gofmt/[gofmt],
+link:/cmd/gofmt[gofmt^],
_beberapa_ gaya harus dipilih.
Gaya tersebut mungkin berbeda dengan apa yang anda sering gunakan di C atau
Java, tapi Go bahasa yang berbeda dan gaya `gofmt` sama baiknya dengan yang
@@ -2380,9 +2376,9 @@ mengurangi waktu _pause_ bahkan sampai ke sub-milidetik, bahkan untuk
_heap_ yang besar.
Pekerjaan masih terus dilanjutkan untuk memperbagus algoritma, mengurangi
biaya dan latensi lebih rendah lagi, dan mengeksplorasi pendekatan baru.
-https://blog.golang.org/ismmkeynote[Intisari ISSM] oleh Rick Hudson dari tim
-Go menjelaskan progres sejauh ini dan menyarankan beberapa pendekatan di masa
-depan.
+https://blog.golang.org/ismmkeynote[Intisari ISSM^]
+oleh Rick Hudson dari tim Go menjelaskan progres sejauh ini dan menyarankan
+beberapa pendekatan di masa depan.
Mengenai performansi, ingatlah bahwa Go memberikan pemrogram kontrol yang
cukup terhadap pengaturan dan alokasi _memory_, lebih banyak dari bahasa
@@ -2390,8 +2386,7 @@ dengan _garbage collection_ pada umumnya.
Pemrogram dapat mengurangi biaya _garbage collection_ lebih banyak dengan
menggunakan bahasa dengan baik;
lihat artikel
-https://blog.golang.org/2011/06/profiling-go-programs.html[_Profiling_ program
-Go_ (Inggris)]
+link:/blog/profiling-go-programs[_Profiling_ program Go_ (Inggris)^]
untuk melihat contohnya, termasuk demonstrasi dari perkakas profiling pada Go.
//}}}
diff --git a/_content/doc/gdb/index.adoc b/_content/doc/gdb/index.adoc
index 57f2021..4e26255 100644
--- a/_content/doc/gdb/index.adoc
+++ b/_content/doc/gdb/index.adoc
@@ -8,15 +8,14 @@ _Instruksi dalam dokumen ini hanya berlaku untuk perkakas toolchain standar
_Gccgo memiliki dukungan gdb langsung_.
Perlu diketahui bahwa
-https://github.com/go-delve/delve[Delve]
+https://github.com/go-delve/delve[Delve^]
adalah alternatif lain dari GDB untuk melakukan _debugging_ pada program Go
yang dibangun dengan _toolchain_ standar.
Delve mengenal _runtime_, struktur data, dan ekspresi Go lebih baik
daripada GDB.
Delve saat ini mendukung Linux, OSX, dan Windows pada `amd64`.
Untuk daftar platform yang didukung, lihatlah
-https://github.com/go-delve/delve/tree/master/Documentation/installation[dokumentasi
-Delve].
+https://github.com/go-delve/delve/tree/master/Documentation/installation[dokumentasi Delve^].
GDB tidak begitu baik mengenali program Go.
Managemen stack, _threading_, dan _runtime_ memiliki aspek-aspek yang cukup
@@ -33,7 +32,7 @@ masalah ini.
Instruksi-instruksi di bawah ini sebaiknya digunakan sebagai panduan tentang
bagaimana menggunakan GDB, tidak menjamin selalu sukses.
Selain artikel ini Anda mungkin bisa membaca lebih lanjut pada
-https://sourceware.org/gdb/current/onlinedocs/gdb/[manual GDB].
+https://sourceware.org/gdb/current/onlinedocs/gdb/[manual GDB^].
[#Introduction]
@@ -155,11 +154,12 @@ Misalnya:
--
Jika Anda ingin melihat bagaimana ia bekerja, atau ingin mengubahnya, lihatlah
-https://golang.org/src/runtime/runtime-gdb.py[src/runtime/runtime-gdb.py]
+https://golang.org/src/runtime/runtime-gdb.py[src/runtime/runtime-gdb.py^]
di dalam distribusi sumber Go.
Skrip ekstensi tersebut bergantung pada tipe-tipe khusus (`hash<T,U>`) dan
variabel (`runtime.m` dan `runtime.g`) yang _linker_
-(https://golang.org/src/cmd/link/internal/ld/dwarf.go[src/cmd/link/internal/ld/dwarf.go])
+(
+https://golang.org/src/cmd/link/internal/ld/dwarf.go[src/cmd/link/internal/ld/dwarf.go^])
pastikan didescripsikan dalam format DWARF.
Jika Anda tertarik pada bentuk informasi _debug_, jalankan `objdump -W a.out`
@@ -179,7 +179,7 @@ dan lihatlah pada bagian `+.debug_*+`.
Anda dapat membangkitkan informasi _debug_ tanpa kompresi dengan menggunakan
`go build -ldflags=-compressdwarf=false`.
(Supaya lebih gampang Anda dapat menyimpan opsi `-ldflags` dalam
- link:/cmd/go/#hdr-Environment_variables[variabel lingkungan GOFLAGS]
+ link:/cmd/go#hdr-Environment_variables[variabel lingkungan GOFLAGS^]
supaya Anda tidak perlu mengulangi penulisannya lagi).
@@ -187,7 +187,7 @@ dan lihatlah pada bagian `+.debug_*+`.
== Tutorial
Dalam tutorial ini kita akan menginspeksi binari dari unit test pada paket
-https://golang.org/pkg/regexp/[regexp].
+https://pkg.go.dev/regexp/[regexp^].
Untuk membuat binari tersebut, pindahlah ke `$GOROOT/src/regexp` dan jalankan
`go test -c`.
Perintah tersebut seharusnya menghasilkan sebuah berkas program bernama
diff --git a/_content/doc/gopath_code/index.adoc b/_content/doc/gopath_code/index.adoc
index 3b1ca13..919d6a4 100644
--- a/_content/doc/gopath_code/index.adoc
+++ b/_content/doc/gopath_code/index.adoc
@@ -1,14 +1,14 @@
= Cara menulis kode Go
:toc:
-:en-go-tool: https://golang.org/cmd/go/
-:en-gopath: https://golang.org/cmd/go/#hdr-GOPATH_environment_variable
[#Introduction]
== Pendahuluan
Dokumen ini mendemonstrasikan cara membuat sebuah paket Go yang sederhana dan
-memperkenalkan perkakas {en-go-tool}[go], cara standar untuk mengambil,
+memperkenalkan perkakas
+link:/cmd/go[go^],
+cara standar untuk mengambil,
membuat, dan memasang paket-paket dan program Go.
Perkakas `go` membutuhkan programmer untuk menyusun kode dengan cara tertentu.
@@ -82,7 +82,7 @@ repositori (`example` dan `image`).
Repositori `example` memiliki dua program (`hello` dan `outyet`) dan sebuah
pustaka (`stringutil`).
Repositori `image` memiliki paket `bmp` dan
-https://godoc.org/golang.org/x/image[beberapa paket lainnya].
+https://pkg.go.dev/golang.org/x/image[beberapa paket lainnya^].
Sebuah ruang-kerja pada umumnya memiliki banyak sumber repositori yang
mengandung banyak paket dan program.
@@ -129,7 +129,8 @@ $ export GOPATH=$(go env GOPATH)
----
Untuk belajar lebih lanjut tentang variabel lingkungan `GOPATH`, lihat
-{en-gopath}[go help gopath].
+link:/cmd/go#hdr-GOPATH_environment_variable[go help gopath^].
+
//}}}
[#ImportPaths]
@@ -369,7 +370,7 @@ Tidak ada keharusan bahwa nama paket harus unik di antara semua paket-paket
dalam membuat sebuah program, hanya saja nama _import path_ haruslah unik.
Lihatlah dokumen
-link:/doc/effective_go.html#names[Efektif Go]
+link:/doc/effective_go.html#names[Efektif Go^]
untuk belajar lebih lanjut tentang konvensi penamaan pada Go.
//}}}
@@ -428,9 +429,9 @@ ok github.com/user/stringutil 0.165s
----
Jalankan
-https://golang.org/cmd/go/#hdr-Test_packages[`go help test`]
+link:/cmd/go#hdr-Test_packages[`go help test`^]
dan lihat
-https://golang.org/pkg/testing/[dokumentasi dari paket testing]
+https://pkg.go.dev/testing/[dokumentasi dari paket testing^]
untuk belajar lebih lanjut.
//}}}
@@ -443,7 +444,7 @@ Perkakas `go` menggunakan properti ini untuk secara otomatis mengambil paket
dari repositori luar.
Misalnya, contoh-contoh yang diuraikan dalam dokumen ini juga tersimpan di
dalam sebuah repositori Git pada
-https://github.com/golang/example[github.com/golang/example].
+https://github.com/golang/example[github.com/golang/example^].
Jika mengikutkan URL dari repositori pada _import path_, `go get` akan
mengambil, membuat, dan memasangnya secara otomatis:
@@ -492,17 +493,20 @@ import "github.com/golang/example/stringutil"
Konvensi ini adalah cara mudah untuk membuat paket Go yang dapat digunakan
oleh orang lain.
Halaman
-https://golang.org/wiki/Projects[Go Wiki] dan situs
-https://godoc.org/[godoc.org] menyediakan daftar proyek dan paket eksternal
-dari Go.
+https://golang.org/wiki/Projects[Go Wiki^]
+dan situs
+https://pkg.go.dev/[pkg.go.dev^]
+menyediakan daftar proyek dan paket eksternal dari Go.
Untuk informasi lebih lanjut tentang menggunakan repositori luar dengan
perkakas `go`, lihatlah
-https://golang.org/cmd/go/#hdr-Remote_import_paths[`go help importpath`].
+link:/cmd/go#hdr-Remote_import_paths[`go help importpath`^].
+
//}}}
[#next]
== Selanjutnya
-Ikuti https://tour.golang-id.org[Tur Bahasa Go] untuk belajar bahasa Go secara
-daring.
+Ikuti
+https://tour.golang-id.org[Tur Bahasa Go^]
+untuk belajar bahasa Go secara daring.
diff --git a/_content/doc/install/gccgo/index.adoc b/_content/doc/install/gccgo/index.adoc
index 6dc3d9b..b305d1a 100644
--- a/_content/doc/install/gccgo/index.adoc
+++ b/_content/doc/install/gccgo/index.adoc
@@ -10,12 +10,13 @@ banyak digunakan.
Walaupun antar-muka itu sendiri berada di bawah lisensi model-BSD, gccgo
biasanya digunakan sebagai bagian dari GCC oleh karena itu dilindungi oleh
lisensi
-https://www.gnu.org/licenses/gpl.html[GNU General Public License]
+https://www.gnu.org/licenses/gpl.html[GNU General Public License^]
(lisensi ini melingkupi gccgo sebagai bagian dari GCC; tidak mengikutkan kode
yang dihasilkan oleh gccgo).
Ingatlah bahwa gccgo bukan _compiler_ gc; lihat instruksi
-link:/doc/install/[Memasang Go] untuk _compiler_ tersebut.
+link:/doc/install/[Memasang Go^]
+untuk _compiler_ tersebut.
[#Releases]
@@ -24,7 +25,7 @@ link:/doc/install/[Memasang Go] untuk _compiler_ tersebut.
Cara paling gampang untuk memasang gccgo yaitu dengan memasang rilis dari
program GCC yang mengikutkan dukungan Go.
Rilis program GCC tersedia pada
-https://gcc.gnu.org/install/binaries.html[situs berikut]
+https://gcc.gnu.org/install/binaries.html[situs berikut^]
dan biasanya sudah tersedia pada kebanyakan distribusi GNU/Linux.
Umumnya distro sudah membangun program GCC yang mengikutkan dukungan
terhadap Go.
@@ -62,7 +63,7 @@ GCC rilis 9 mengikutkan implementasi dari Go rilis 1.12.2.
Jika Anda tidak bisa menggunakan versi rilis, atau lebih menyukai membangun
gccgo dari awal, kode sumber gccgo tersedia lewat Git.
Situs GCC memiliki
-https://gcc.gnu.org/git.html[instruksi untuk mendapatkan kode sumber GCC].
+https://gcc.gnu.org/git.html[instruksi untuk mendapatkan kode sumber GCC^].
Kode sumber gccgo sudah termasuk di dalamnya.
Versi stabil dari dukungan Go tersedia dalam cabang `devel/gccgo` pada
repositori utama dari GCC: `git://gcc.gnu.org/git/gcc.git`.
@@ -72,7 +73,7 @@ Perlu diketahui, walaupun gcc.gnu.org adalah salah satu cara umum untuk
mendapatkan kode sumber untuk antar-muka Go, repositori itu bukanlah sumber
utama sebenarnya.
Jika Anda ingin berkontribusi pada antar-muka _compiler_ Go, lihatlah halaman
-link:/doc/gccgo_contribute.html[Berkontribusi pada gccgo].
+link:/doc/gccgo_contribute.html[Berkontribusi pada gccgo^].
[#Building]
@@ -81,7 +82,7 @@ link:/doc/gccgo_contribute.html[Berkontribusi pada gccgo].
Pembangunan gccgo seperti membangun GCC biasa dengan satu atau dua opsi
tambahan.
Lihat
-https://gcc.gnu.org/install/[instruksi pada situs gcc].
+https://gcc.gnu.org/install/[instruksi pada situs gcc^].
Saat Anda menjalankan `configure`, tambahkan opsi
`+--enable-languages=c,c++,go+` (beserta dengan bahasa pemrograman lain yang
ingin dibangun).
@@ -128,7 +129,7 @@ gunakan opsi `+--with-ld+=_GOLD_BINARY_`.
Sejumlah kebutuhan awal diperlukan untuk membangun GCC, seperti yang
dijelaskan pada
-https://gcc.gnu.org/install/prerequisites.html[situs GCC].
+https://gcc.gnu.org/install/prerequisites.html[situs GCC^].
Sangatlah penting untuk memasang semua kebutuhan awal tersebut sebelum
menjalankan skrip `configure` pada gcc.
Pustaka-pustaka untuk kebutuhan awal dapat diunduh menggunakan skrip
@@ -158,7 +159,7 @@ make install
_Compiler_ gccgo bekerja seperti antar-muka gcc lainnya.
Pada GCC 5, pemasangan gccgo mengikutkan versi dari perintah go, yang bisa
digunakan untuk membangun program Go seperti yang dijelaskan di
-https://golang.org/cmd/go.
+link:/cmd/go[Perintah Go^].
Untuk mengompilasi sebuah berkas tanpa menggunakan perkakas `go`,
----
@@ -189,7 +190,7 @@ Di sini `${prefix}` adalah opsi `+--prefix+` saat membangun gccgo,
biasanya `/usr`.
Apakah menggunakan `lib` atau `lib64` bergantung kepada target.
Biasanya `lib64` untuk sistem `x86_64`, dan `lib` untuk sistem lainnya.
-Intinya adalah untuk menentukan direktori tempat `libgo.so` disimpan.
+Inti-nya adalah untuk menentukan direktori tempat `libgo.so` disimpan.
--
* Mengirim opsi `-WL,-R` saat melakukan langkah pengaitan (ganti `lib` dengan
@@ -232,13 +233,13 @@ Opsi ini tidak dibutuhkan jika Anda membangun dengan perkakas go.
[#Imports]
== Impor
-Saat Anda mengompilasi sebuah berkas yang meng-ekspor sesuatu, informasi
+Saat Anda mengompilasi sebuah berkas yang mengekspor sesuatu, informasi
tentang ekspor ini disimpan langsung dalam berkas objek.
Jika Anda membangun dengan gccgo, bukan dengan perkakas go, maka saat Anda
-meng-impor sebuah paket, Anda harus memberitahu gccgo bagaimana mencari berkas
+mengimpor sebuah paket, Anda harus memberitahu gccgo bagaimana mencari berkas
tersebut.
-Saat Anda meng-impor paket _FILE_ dengan gccgo, ia akan mencari data impor
+Saat Anda mengimpor paket _FILE_ dengan gccgo, ia akan mencari data impor
dalam berkas-berkas berikut, dan menggunakan berkas pertama yang ditemukan.
* __FILE__.gox
@@ -407,9 +408,9 @@ pada _compiler_ gc.
Nama dari fungsi-fungsi Go yang diakses dari C bisa berubah sewaktu-waktu.
Sekarang ini nama dari fungsi Go yang tidak memiliki _receiver_ yaitu
`prefix.package.Functionname`.
-Nilai dari `prefix` diset lewat opsi `-fgo-prefix` saat paket dikompilasi;
-jika opsi ini tidak diset, maka nilai bakunya adalah `go`.
-Untuk memanggil fungsi tersebut dari C Anda harus menset nama tersebut
+Nilai dari `prefix` di set lewat opsi `-fgo-prefix` saat paket dikompilasi;
+jika opsi ini tidak di set, maka nilai baku-nya adalah `go`.
+Untuk memanggil fungsi tersebut dari C Anda harus mengeset nama tersebut
menggunakan ekstensi GCC.
----
@@ -422,7 +423,7 @@ extern int go_function(int) __asm__ ("myprefix.mypackage.Function");
Versi Go pada GCC mendukung pembangkit otomatis deklarasi Go dari kode C.
Fasilitas ini sedikit aneh, dan pengguna pada umumnya sebaiknya menggunakan
program
-link:/cmd/cgo[cgo]
+link:/cmd/cgo[cgo^]
dengan opsi `-gccgo`.
Kompilasi kode C Anda seperti biasa, dan tambahkan opsi
diff --git a/_content/doc/install/source/index.adoc b/_content/doc/install/source/index.adoc
index 3b930e8..63ed2ee 100644
--- a/_content/doc/install/source/index.adoc
+++ b/_content/doc/install/source/index.adoc
@@ -6,18 +6,18 @@
Topik ini menjelaskan cara membangun dan menjalankan Go dari kode sumbernya
langsung.
Untuk memasang Go lewat aplikasi, lihat
-link:/doc/install[Unduh dan pasang].
+link:/doc/install[Unduh dan pasang^].
== Pendahuluan
Go adalah sebuah proyek sumber terbuka, didistribusikan di bawah
-https://golang.org/LICENSE[lisensi model-BSD].
+https://golang.org/LICENSE[lisensi model-BSD^].
Dokumen ini menjelaskan cara mengambil kode sumber, membangunnya dalam mesin
Anda, dan menjalankannya.
Umumnya pengguna tidak perlu melakukan hal ini, namun cukup memasang dari
paket biner yang sudah dikompilasi seperti yang dijelaskan pada artikel
-link:/doc/install[Unduh dan pasang].
+link:/doc/install[Unduh dan pasang^].
Jika Anda ingin membantu membangun kode sumber yang ada pada paket-paket
pra-kompilasi, silakan lanjutkan membaca artikel.
@@ -25,7 +25,7 @@ Ada dua _compiler_ resmi Go: `gc` dan `gccgo`.
Dokumen ini fokus pada `gc`, _compiler_ dan perkakas Go.
Untuk informasi tentang cara bekerja dengan `gccgo`, _compiler_ tradisional
yang menggunakan GCC, lihat
-link:/doc/install/gccgo/[Penyiapan dan penggunaan gccgo].
+link:/doc/install/gccgo/[Penyiapan dan penggunaan gccgo^].
_Compiler_ Go mendukung kumpulan instruksi berikut:
@@ -48,7 +48,7 @@ s390x::
IBM z/Architecture.
wasm::
- https://webassembly.org/[WebAssembly].
+ https://webassembly.org/[WebAssembly^].
Go _compiler_ dapat ditujukan untuk sistem operasi AIX, Android, DragonFly
BSD, FreeBSD, Illumos, Linux, macOS/iOS (Darwin), NetBSD, OpenBSD, Plan 9,
@@ -56,14 +56,13 @@ Solaris, dan Windows (walaupun tidak semua sistem operasi mendukung semua
arsitektur).
Daftar dukungan yang dianggap "kelas pertama" tersedia pada halaman wiki
-https://golang.org/wiki/PortingPolicy#first-class-ports[dukungan kelas
-pertama].
+https://golang.org/wiki/PortingPolicy#first-class-ports[dukungan kelas pertama^].
Seluruh kombinasi yang didukung ada dalam daftar
<<environment,variabel lingkungan>> di bawah.
Lihat halaman pemasangan untuk
-link:/doc/install#requirements[kebutuhan sistem keseluruhan].
+link:/doc/install#requirements[kebutuhan sistem keseluruhan^].
Batasan berikut berlaku untuk sistem yang dapat dibangun hanya dari sumber:
* Untuk Linux pada PowerPC 64-bit, versi kernel minimum yaitu 2.6.37, artinya
@@ -85,14 +84,14 @@ digunakan untuk membangun perkakas dari awal.
=== Perkakas _bootstrap_ dari rilis biner
Untuk menggunakan rilis biner sebagai perkakas _bootstrap_, lihat
-https://golang.org/dl/[halaman unduhan]
+https://golang.org/dl/[halaman unduhan^]
atau gunakan paket distribusi Go lainnya.
=== Perkakas _bootstrap_ dari sumber
Untuk membangun perkakas _bootstrap_ dari kode sumber, gunakan cabang
(_branch_) git `release-branch.go1.4` atau unduh
-https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz[go1.4-bootstrap-20171003.tar.gz],
+https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz[go1.4-bootstrap-20171003.tar.gz^],
yang berisi kode sumber Go 1.4 dengan beberapa perbaikan yang menjaga supaya
perkakas dapat berjalan pada sistem operasi terbaru.
(Go 1.4 adalah distribusi terakhir yang ditulis menggunakan C.)
@@ -113,7 +112,7 @@ diasumsikan berada pada direktori GOROOT_BOOTSTRAP.
Untuk membuat perkakas _bootstrap_ dari hasil kompilasi-silang, untuk sistem
yang Go 1.4 tidak punya targetnya (misalnya, `linux/ppc64le`), pasang Go di
sistem yang berbeda kemudian jalankan
-https://golang.org/src/bootstrap.bash[bootstrap.bash].
+https://golang.org/src/bootstrap.bash[bootstrap.bash^].
Misalnya, saat dijalankan sebagai berikut
----
@@ -145,14 +144,14 @@ Untuk melanjutkan ke langkah selanjutnya, Anda harus memasang Git.
(Periksa apakah Anda sudah memiliki perintah `git` sebelum melanjutkan.)
Jika Anda belum memasang Git, ikuti instruksi pada halaman
-https://git-scm.com/downloads[mengunduh Git].
+https://git-scm.com/downloads[mengunduh Git^].
[#ccompiler]
== Pasang _compiler_ C (opsional)
Untuk membuat Go dengan dukungan
-https://golang.org/cmd/cgo[cgo],
+link:/cmd/cgo[cgo^],
yang membolehkan Go program mengimpor pustaka C, _compiler_ C seperti `gcc`
atau `clang` haruslah terpasang terlebih dahulu.
Pasanglah _compiler_ C sesuai dengan metode pemasangan di sistem Anda.
@@ -190,7 +189,7 @@ Lihat bagian tentang <<gopath,GOPATH>> di bawah.
== Pindah ke cabang master (opsional)
Jika Anda berniat untuk mengubah kode sumber Go, dan
-link:/doc/contribute.html[berkontribusi]
+link:/doc/contribute.html[berkontribusi^]
ke proyek ini, maka pindahlah dari cabang rilis ke cabang `master` (cabang
pengembangan).
Jika bukan demikian, lewati langkah ini.
@@ -271,7 +270,7 @@ Anda hampir selesai.
Anda hanya perlu sedikit pengaturan.
Dokumen
-link:/doc/code.html[Bagaimana menulis kode Go]
+link:/doc/code[Bagaimana menulis kode Go^]
menyediakan *instruksi pengaturan yang penting* untuk menggunakan perkakas Go.
@@ -279,9 +278,9 @@ menyediakan *instruksi pengaturan yang penting* untuk menggunakan perkakas Go.
== Pasang perkakas tambahan
Sumber kode untuk beberapa perkakas Go tambahan (termasuk
-link:/cmd/godoc/[godoc])
+link:/cmd/godoc/[godoc^])
disimpan di
-https://golang.org/x/tools[repositori tools].
+https://golang.org/x/tools[repositori tools^].
Untuk memasang salah satu perkakas tersebut (misalnya `godoc`):
----
@@ -292,7 +291,7 @@ Untuk memasang perkakas tambahan tersebut, perintah `go get` membutuhkan
<<git,Git>> terpasang di lokal.
Anda juga harus memiliki sebuah ruang kerja (GOPATH); lihatlah
-link:/doc/code.html[Bagaimana menulis kode Go]
+link:/doc/code[Bagaimana menulis kode Go^]
untuk lebih detail.
@@ -300,8 +299,9 @@ untuk lebih detail.
== Komunitas
Sumber komunitas biasa seperti kanal `#go-nuts` di server IRC
-https://freenode.net/[Freenode] dan milis
-https://groups.google.com/group/golang-nuts[Go Nuts]
+https://freenode.net/[Freenode^]
+dan milis
+https://groups.google.com/group/golang-nuts[Go Nuts^]
memiliki beberapa orang yang aktif yang dapat membantu masalah Anda selama
pemasangan.
Bagi yang ingin selalu terbarui, ada milis lain yaitu
@@ -367,7 +367,7 @@ Namun, bila Anda menyalin kode sumber Go ke `$HOME/go`, Anda harus menset
$GOBIN::
Direktori di mana program-program selain perkakas distribusi Go akan
dipasang oleh
-link:/cmd/go/[perintah go].
+link:/cmd/go/[perintah go^].
Misalnya, perintah `go get golang.org/x/tools/cmd/godoc` akan mengunduh,
membangun, dan memasang program `godoc` di dalam direktori `$GOBIN`.
Bila kosong, `$GOBIN` diset ke `$GOPATH/bin` (atau `$HOME/go/bin` bila
@@ -505,14 +505,14 @@ Nilai bakunya yaitu `power8`.
* GOPPC64=power9: gunakan instruksi ISA v3.00
$GOWASM (hanya untuk `wasm`):: Variabel ini berisi daftar fitur-fitur
-https://github.com/WebAssembly/proposals[eksperimental WebAssembly]
+https://github.com/WebAssembly/proposals[eksperimental WebAssembly^]
yang hasil pembangunan program WebAssembly dapat gunakan.
Nilai bakunya yaitu kosong (tidak ada fitur eksperimental yang digunakan).
+
* GOWASM=satconv: gunakan fitur
- https://github.com/WebAssembly/nontrapping-float-to-int-conversions/blob/master/proposals/nontrapping-float-to-int-conversion/Overview.md[konversi float-to-int]
+ https://github.com/WebAssembly/nontrapping-float-to-int-conversions/blob/master/proposals/nontrapping-float-to-int-conversion/Overview.md[konversi float-to-int^]
* GOWASM=signext: gunakan fitur
-https://github.com/WebAssembly/sign-extension-ops/blob/master/proposals/sign-extension-ops/Overview.md[operator sign-extension]
+https://github.com/WebAssembly/sign-extension-ops/blob/master/proposals/sign-extension-ops/Overview.md[operator sign-extension^]
Ingatlah bahwa $GOOS dan $GOARCH mengidentifikasi _target_ lingkungan,
diff --git a/_content/doc/modules/managing-dependencies/index.adoc b/_content/doc/modules/managing-dependencies/index.adoc
index 9775327..40218bd 100644
--- a/_content/doc/modules/managing-dependencies/index.adoc
+++ b/_content/doc/modules/managing-dependencies/index.adoc
@@ -46,7 +46,7 @@ dependensi yang mungkin suatu saat nanti berguna.
Anda bisa mengambil dan menggunakan paket-paket eksternal menggunakan perkakas
Go.
Pada situs
-https://pkg.go.dev[pkg.go.dev],
+https://pkg.go.dev[pkg.go.dev^],
Anda bisa mencari paket yang akan digunakan, kemudian menggunakan perintah
`go` untuk mengimpor paket tersebut ke dalam kode Anda untuk memanggil
fungsinya.
@@ -57,7 +57,7 @@ Untuk informasi lebih lanjut tentang setiap langkah, lihat bagian-bagian dari
topik ini.
. link:#locating_packages[Carilah paket yang akan digunakan] di
- https://pkg.go.dev[pkg.go.dev]
+ https://pkg.go.dev[pkg.go.dev^]
. link:#locating_packages[Impor paket] tersebut ke dalam kode.
. Tambahkan kode Anda ke dalam sebuah modul untuk melacak dependensi (jika
belum berada dalam modul).
@@ -156,7 +156,7 @@ yang diunduh, terutama untuk pengembang lain yang bekerja dalam proyek Anda.
Masukan berkas go.mod dan go.sum ke dalam repositori berikut dengan kode Anda.
Lihat
-link:/doc/modules/gomod-ref[referensi go.mod]
+link:/doc/modules/gomod-ref[referensi go.mod^]
untuk informasi lebih lanjut.
[#naming_module]
diff --git a/_content/doc/tutorial/add-a-test/index.adoc b/_content/doc/tutorial/add-a-test/index.adoc
index beb4f34..0453b84 100644
--- a/_content/doc/tutorial/add-a-test/index.adoc
+++ b/_content/doc/tutorial/add-a-test/index.adoc
@@ -62,7 +62,7 @@ Dalam kode tersebut, kita:
Nama fungsi untuk tes haruslah dengan format `Test__Nama__`, yang mana
__Nama__ menyatakan apa yang akan diuji.
Fungsi-fungsi tes menerima sebuah pointer ke
- https://pkg.go.dev/testing/#T[tipe `testing.T`]
+ https://pkg.go.dev/testing#T[tipe `testing.T`^]
sebagai parameter.
Kita menggunakan method-method pada parameter ini untuk melaporkan dan
mencatat hasil dari pengujian.
@@ -71,7 +71,7 @@ Dalam kode tersebut, kita:
Fungsi tersebut seharusnya mengembalikan sebuah pesan yang valid.
Jika pemanggilan mengembalikan eror atau sebuah pesan respon yang tidak
diharapkan (misalnya pesan yang tidak berisi nama), kita akan gunakan
-https://pkg.go.dev/testing/#T.Fatalf[method `Fatalf`]
+https://pkg.go.dev/testing#T.Fatalf[method `Fatalf`^]
pada parameter `t` untuk mencetak sebuah pesan ke layar dan mengakhiri
pengujian.
** `TestHelloEmpty` memanggil fungsi `Hello` dengan string kosong.
diff --git a/_content/doc/tutorial/create-module/index.adoc b/_content/doc/tutorial/create-module/index.adoc
index cc56958..320dc27 100644
--- a/_content/doc/tutorial/create-module/index.adoc
+++ b/_content/doc/tutorial/create-module/index.adoc
@@ -6,7 +6,7 @@
Artikel ini adalah bagian pertama dari seri tutorial yang memperkenalkan
beberapa fitur fundamental dari bahasa Go.
Jika Anda baru saja memulai belajar Go, pastikan membaca
-link:/doc/tutorial/getting-started/[Tutorial: Go dari awal]
+link:/doc/tutorial/getting-started/[Tutorial: Go dari awal^]
terlebih dahulu,
yang secara singkat mengenalkan perintah `go`, modul Go, dan kode Go.
@@ -33,7 +33,8 @@ berbeda dari bahasa Go.
. link:/doc/tutorail/compile-install/[Mengompilasi dan memasang aplikasi^] --
Mengompilasi dan memasang kode kita secara lokal.
-NOTE: Untuk tutorial lainnya, lihat link:/doc/tutorial/[Tutorial^].
+NOTE: Untuk tutorial lainnya, lihat
+link:/doc/tutorial/[Tutorial^].
[#prerequisites]
@@ -101,8 +102,8 @@ cd greetings
----
--
-. Buatlah Go modul menggunakan perintah link:/ref/mod#go-mod-init[`go mod
- init`^]
+. Buatlah Go modul menggunakan perintah
+ link:/ref/mod#go-mod-init[`go mod init`^]
+
--
Jalankan perintah "`go mod init`", dengan memberikan parameter path modul --
@@ -163,7 +164,7 @@ Dalam Go, sebuah fungsi yang namanya diawali dengan huruf kapital dapat
dipanggil oleh fungsi dari paket yang berbeda.
Dalam Go hal ini dikenal dengan nama yang diekspor.
Untuk lebih lanjut tentang nama-nama yang diekspor, lihat
-https://tour.golang-id.org/basics/3[Nama-nama yang diekspor]
+https://tour.golang-id.org/basics/3[Nama-nama yang diekspor^]
dalam tur Go.
image:/doc/tutorial/create-module/function-syntax.png[]
@@ -183,8 +184,9 @@ message = fmt.Sprintf("Hi, %v. Welcome!", name)
----
--
-* Menggunakan https://pkg.go.dev/fmt/#Sprintf[fungsi Sprintf] dari paket `fmt`
- untuk membuat pesan salaman yang disimpan dalam `message`.
+* Menggunakan
+ https://pkg.go.dev/fmt/#Sprintf[fungsi Sprintf^]
+ dari paket `fmt` untuk membuat pesan salaman yang disimpan dalam `message`.
Argumen yang pertama dari fungsi tersebut yaitu format dari string, dan
`Sprintf` akan mengganti format "`%v`" dengan nilai dari parameter `name`.
@@ -193,4 +195,5 @@ message = fmt.Sprintf("Hi, %v. Welcome!", name)
Pada langkah selanjutnya, kita akan memanggil fungsi ini dari modul yang lain.
-Lanjut: link:/doc/tutorial/call-module-code/[Memanggil kode dari modul lain].
+Lanjut:
+link:/doc/tutorial/call-module-code/[Memanggil kode dari modul lain].
diff --git a/_content/index.adoc b/_content/index.adoc
index 8bf013e..177a358 100644
--- a/_content/index.adoc
+++ b/_content/index.adoc
@@ -12,59 +12,58 @@ Untuk menggunakan situs ini sangat mudah.
Jika Anda menemukan artikel resmi dalam Bahasa Inggris, Anda bisa membacanya
dengan mengubah tautan dari "golang.org/" ke "golang-id.org/".
Misalnya, dokumentasi resmi untuk memasang Go ada di
-https://golang.org/doc/install[https://golang.org/doc/install],
+https://golang.org/doc/install[https://golang.org/doc/install^],
yang juga dapat di akses dalam Bahasa Indonesia di
-https://golang-id.org/doc/install[https://golang-id.org/doc/install].
+https://golang-id.org/doc/install[https://golang-id.org/doc/install^].
Untuk artikel blog, Anda tinggal mengganti tautan dari "blog.golang.org/"
menjadi "golang-id.org/blog/".
Misalnya, tautan blog tentang cara menggunakan Go modul di situs resmi yaitu
-https://blog.golang.org/using-go-modules[https://blog.golang.org/using-go-modules],
+https://blog.golang.org/using-go-modules[https://blog.golang.org/using-go-modules^],
dan terjemahannya dapat diakses lewat tautan
-https://golang-id.org/blog/using-go-modules[https://golang-id.org/blog/using-go-modules].
+https://golang-id.org/blog/using-go-modules[https://golang-id.org/blog/using-go-modules^].
-== link:/doc/[Dokumentasi]
+== link:/doc/[Dokumentasi^]
Untuk mengetahui cara memasang bahasa Go di sistem operasi anda dan belajar
-lebih lanjut, silakan buka halaman link:/doc[dokumentasi].
+lebih lanjut, silakan buka halaman
+link:/doc[dokumentasi^].
-== link:/blog[Blog]
+== link:/blog[Blog^]
Halaman ini berisi daftar terjemahan blog dari proyek Go resmi dan blog dari
komunitas Go Indonesia.
-* link:/blog/go1.15[Rilis Go 1.15],
+* link:/blog/go1.15[Rilis Go 1.15^],
11 Agustus 2020. Alex Rakoczy
-* link:/blog/module-compatibility[Bagian 5 - Menjaga Modul Anda tetap
- Kompatibel],
+* link:/blog/module-compatibility[Bagian 5 - Menjaga Modul Anda tetap Kompatibel^],
2 Juli 2020. _Jean de Klerk_ dan _Jonathan Amsterdam_
-* link:/blog/a-new-go-api-for-protocol-buffers[Go API baru untuk Protocol
- Buffers],
+* link:/blog/a-new-go-api-for-protocol-buffers[Go API baru untuk Protocol Buffers^],
2 Maret 2020. Joe Tsai, Damien Neil, dan Herbie Ong
-* link:/blog/go1.14[Go 1.14 telah dirilis],
+* link:/blog/go1.14[Go 1.14 telah dirilis^],
25 Februari 2020. _Alex Rakoczy_
-* link:/blog/pkg.go.dev-2020[Langkah selanjutnya untuk pkg.go.dev],
+* link:/blog/pkg.go.dev-2020[Langkah selanjutnya untuk pkg.go.dev^],
31 Januari 2020. _Julie Qiu_
-* link:/blog/go1.15-proposals[Proposal untuk Go 1.15],
+* link:/blog/go1.15-proposals[Proposal untuk Go 1.15^],
28 Januari 2020. _Robert Griesemer_, untuk tim Go
-baca artikel blog link:/blog[lainnya].
+baca artikel blog link:/blog[lainnya^].
-== link:/modul[Modul]
+== link:/modul[Modul^]
Temukan Go modul yang dibuat oleh komunitas.
-== link:/wicara[Wicara]
+== link:/wicara[Wicara^]
Halaman ini berisi _podcast_ dan video tentang Go yang dibawakan oleh
komunitas Go Indonesia.
@@ -72,13 +71,13 @@ komunitas Go Indonesia.
== Acara
-=== https://www.meetup.com/GoJakarta/[Jakarta,window=_blank]
+=== https://www.meetup.com/GoJakarta/[Jakarta^]
Bagi komunitas Go yang berdomisili di kota Jakarta dan sekitarnya, bisa ikuti
dan pantau acara pertemuan komunitas Go Jakarta selanjutnya yang cukup rutin
diadakan.
-=== https://www.meetup.com/GO-BDG/[Bandung]
+=== https://www.meetup.com/GO-BDG/[Bandung^]
Bagi komunitas Go yang berdomisili di kota Bandung dan sekitarnya, bisa
ikuti dan pantau acara pertemuan komunitas Go Bandung selanjutnya.
@@ -86,28 +85,28 @@ ikuti dan pantau acara pertemuan komunitas Go Bandung selanjutnya.
== Bantuan
-=== https://groups.google.com/forum/#!forum/golang-id[Milis]
+=== https://groups.google.com/forum/#!forum/golang-id[Milis^]
Jika anda memiliki pertanyaan, atau ingin berbagi karya Go anda, atau ingin
berdiskusi lebih lanjut tentang Go.
-=== https://www.reddit.com/r/golang_id/[Reddit]
+=== https://www.reddit.com/r/golang_id/[Reddit^]
Sub reddit untuk mendapatkan artikel terbaru dan juga bisa sebagai alternatif
tempat berdiskusi tentang Go.
-=== https://twitter.com/IdGolang[Twitter]
+=== https://twitter.com/IdGolang[Twitter^]
Ikuti kami di Twitter untuk mendapatkan artikel-artikel terbaru dalam Bahasa
Indonesia.
-=== https://t.me/golangID[Telegram]
+=== https://t.me/golangID[Telegram^]
Grup untuk berdiskusi dan tanya jawab dengan cepat mengenai apa pun.
-== link:/berkontribusi.html[Berkontribusi]
+== link:/berkontribusi.html[Berkontribusi^]
Siapa pun dapat berkontribusi dalam situs ini.
Untuk melihat daftar kontribusi yang dapat dilakukan, silakan kunjungi
-link:/berkontribusi.html[halaman ini].
+link:/berkontribusi.html[halaman ini^].
diff --git a/_content/modul/index.adoc b/_content/modul/index.adoc
index d38567e..1ef3965 100644
--- a/_content/modul/index.adoc
+++ b/_content/modul/index.adoc
@@ -3,39 +3,39 @@
Di halaman ini Anda akan menemukan modul, paket, dan perkakas yang dibuat oleh
komunitas Go Indonesia.
-https://pkg.go.dev/github.com/bxcodec/faker[github.com/bxcodec/faker]::
+https://pkg.go.dev/github.com/bxcodec/faker[github.com/bxcodec/faker^]::
Pembangkit data palsu untuk tipe struct.
-https://pkg.go.dev/github.com/iwanbk/bcache[github.com/iwanbk/bcache]::
+https://pkg.go.dev/github.com/iwanbk/bcache[github.com/iwanbk/bcache^]::
Pustaka untuk mendistribusikan _cache_ dalam memori pada aplikasi.
-https://pkg.go.dev/github.com/iwanbk/rimcu[github.com/iwanbk/rimcu]::
+https://pkg.go.dev/github.com/iwanbk/rimcu[github.com/iwanbk/rimcu^]::
Pustaka yang menggabungkan Redis dan _cache_ dalam memori.
-https://pkg.go.dev/github.com/iwanbk/gobeanstalk[github.com/iwanbk/gobeanstalk]::
- Klien untuk http://kr.github.io/beanstalkd/[beanstalkd].
+https://pkg.go.dev/github.com/iwanbk/gobeanstalk[github.com/iwanbk/gobeanstalk^]::
+ Klien untuk http://kr.github.io/beanstalkd/[beanstalkd^].
-https://pkg.go.dev/git.sr.ht/~shulhan/asciidoctor-go[git.sr.ht/~shulhan/asciidoctor-go]::
+https://pkg.go.dev/git.sr.ht/~shulhan/asciidoctor-go[git.sr.ht/~shulhan/asciidoctor-go^]::
Pustaka untuk mengurai bahasa _markup_ asciidoc dan mengonversinya ke
HTML5.
-https://pkg.go.dev/git.sr.ht/~shulhan/ciigo[git.sr.ht/~shulhan/ciigo]::
+https://pkg.go.dev/git.sr.ht/~shulhan/ciigo[git.sr.ht/~shulhan/ciigo^]::
Membuat situs web statis menggunakan bahasa _markup_ asciidoc.
Situs ini adalah salah satu contoh yang menggunakan perkakas ini.
-https://pkg.go.dev/github.com/shuLhan/rescached-go[rescached-go]::
+https://pkg.go.dev/github.com/shuLhan/rescached-go[rescached-go^]::
DNS forwarder dengan cache.
-https://pkg.go.dev/github.com/shuLhan/share[github.com/shuLhan/share]::
+https://pkg.go.dev/github.com/shuLhan/share[github.com/shuLhan/share^]::
Kumpulan paket dan perkakas yang membantu membuat aplikasi dengan Go.
Beberapa paket yang direkomendasikan,
- * https://pkg.go.dev/github.com/shuLhan/share/lib/dns[lib/dns] - pustaka
+ * https://pkg.go.dev/github.com/shuLhan/share/lib/dns[lib/dns^] - pustaka
untuk protokol DNS.
- * https://pkg.go.dev/github.com/shuLhan/share/lib/http[lib/http] - pustaka
+ * https://pkg.go.dev/github.com/shuLhan/share/lib/http[lib/http^] - pustaka
yang membungkus standar pustaka `net/http` dan menyediakan API yang
simpel untuk membuat REST API dengan _routing_.
- * https://pkg.go.dev/github.com/shuLhan/share/lib/memfs[lib/memfs] -
+ * https://pkg.go.dev/github.com/shuLhan/share/lib/memfs[lib/memfs^] -
pustaka untuk menanam berkas ke dalam sumber kode Go.
- * https://pkg.go.dev/github.com/shuLhan/share/lib/websocket[lib/websocket]
+ * https://pkg.go.dev/github.com/shuLhan/share/lib/websocket[lib/websocket^]
- pustaka protokol WebSocket menggunakan _epoll_ untuk membuat peladen
dan klien WebSocket.
diff --git a/_content/ref/mem/index.adoc b/_content/ref/mem/index.adoc
index 71fc1ba..ab6f24d 100644
--- a/_content/ref/mem/index.adoc
+++ b/_content/ref/mem/index.adoc
@@ -18,9 +18,9 @@ goroutine harus membuat akses tersebut secara serial.
Supaya akses tersebut serial, lindungi data dengan operasi kanal (_channel_)
atau model sinkronisasi primitif lainnya seperti yang ada dalam paket
-https://golang.org/pkg/sync/[sync]
+https://pkg.go.dev/sync/[sync^]
dan
-https://golang.org/pkg/sync/atomic/[sync/atomic].
+https://pkg.go.dev/sync/atomic/[sync/atomic^].
== Terjadi-sebelum
diff --git a/_content/ref/spec/index.adoc b/_content/ref/spec/index.adoc
index bb1e879..862f992 100644
--- a/_content/ref/spec/index.adoc
+++ b/_content/ref/spec/index.adoc
@@ -10,9 +10,9 @@
Dokumen ini adalah referensi manual untuk bahasa pemrograman Go.
Untuk informasi dan dokumentasi lainnya lihat
-https://golang.org[golang.org (Inggris)]
+https://golang.org[golang.org (Inggris)^]
atau
-link:/[golang-id.org (Indonesia)].
+link:/[golang-id.org (Indonesia)^].
Go adalah bahasa pemrograman yang dirancang untuk pemrograman sistem.
Go adalah bahasa dengan tipe yang kuat dan dengan _garbage-collection_ dan
@@ -65,7 +65,7 @@ bahasa Go.
== Representasi sumber kode
Sumber kode adalah teks Unicode dalam
-https://id.wikipedia.org/wiki/UTF-8[UTF-8].
+https://id.wikipedia.org/wiki/UTF-8[UTF-8^].
Teks tersebut tidak kanonis, sehingga titik kode dengan aksen berbeda dengan
karakter yang sama yang dibangun dari menggabungkan sebuah aksen dan sebuah
huruf;
@@ -96,7 +96,7 @@ unicode_letter = /* titik kode Unicode dikelompokkan sebagai "Letter" (huruf) */
unicode_digit = /* titik kode Unicode dikelompokkan sebagai "Number, decimal digit" */ .
----
-https://www.unicode.org/versions/Unicode8.0.0/[The Unicode Standard 8.0],
+https://www.unicode.org/versions/Unicode8.0.0/[The Unicode Standard 8.0^],
Bagian 4.5 "General Category" mendefinisikan sekumpulan kategori karakter.
Go mengenali semua karakter dalam kategori Letter berikut Lu, Ll, Lt, Lm, atau
Lo sebagai huruf Unicode, dan yang berada dalam kategori Number Nd sebagai
@@ -753,7 +753,7 @@ rune alias untuk int32
Nilai dari _n_-bit integer yaitu _n_ bit lebarnya dan direpresentasikan
menggunakan
-https://en.wikipedia.org/wiki/Two's_complement[aritmetika komplemen ganda].
+https://en.wikipedia.org/wiki/Two's_complement[aritmetika komplemen ganda^].
Ada juga kumpulan tipe numerik yang ukurannya tergantung pada arsitektur:
@@ -987,7 +987,7 @@ Deklarasi field bisa ditambah dengan literal string _tag_, yang menjadi
atribut dari field.
Tag kosong berarti tidak ada tag.
Tag bisa diakses lewat
-https://golang.org/pkg/reflect/#StructTag[interface refleksi]
+https://golang.org/pkg/reflect/#StructTag[interface refleksi^]
dan ambil bagian dalam
<<Type_identity,identitas tipe>>
dari struct.
@@ -3343,7 +3343,7 @@ x = q*y + r dan |r| < |y|
----
dengan `x / y` dibulatkan ke nol
-https://en.wikipedia.org/wiki/Modulo_operation[(pembagian dibulatkan)].
+https://en.wikipedia.org/wiki/Modulo_operation[(pembagian dibulatkan)^].
----
x y x / y x % y
@@ -5546,7 +5546,7 @@ di-compile dan bisa jadi relatif terhadap repositori dari paket yang dipasang.
Batasan implementasi: _Compiler_ bisa membatasi ImportPath menjadi string yang
tidak kosong menggunakan hanya karakter yang berada dalam kategori umum
-https://www.unicode.org/versions/Unicode6.3.0/[Unicode]
+https://www.unicode.org/versions/Unicode6.3.0/[Unicode^]
L, M, N, P, dan S (karakter grafik tanpa spasi) dan bisa juga tidak
mengikutkan karaketer `!"#$%&'()*,:;<=>?[\]^`{|}` dan karakter pengganti
Unicode U+FFFD.