Skip to content

Instantly share code, notes, and snippets.

@solanoize
Last active February 2, 2026 05:52
Show Gist options
  • Select an option

  • Save solanoize/d6ee4b949fa7e54e97706f1d5362b27c to your computer and use it in GitHub Desktop.

Select an option

Save solanoize/d6ee4b949fa7e54e97706f1d5362b27c to your computer and use it in GitHub Desktop.
Catatan Pointer Go Lang
// You can edit this code!
// Click here and start typing.
package main
import "fmt"
type User struct {
Name string
Age int
}
func changeNameByValue(u User) {
u.Name = "Andi"
}
func changeNameByPointer(u *User) {
u.Name = "Andi"
}
func resetAge(age *int) {
*age = 0
}
func (u *User) Rename(name string) {
u.Name = name
}
func main() {
user := User{
Name: "Budi",
Age: 25,
}
// Awal: {Budi 25}
fmt.Println("Awal:", user)
changeNameByValue(user)
// Setelah changeNameByValue: {Budi 25}
fmt.Println("Setelah changeNameByValue:", user)
changeNameByPointer(&user)
// Setelah changeNameByPointer: {Andi 25}
fmt.Println("Setelah changeNameByPointer:", user)
resetAge(&user.Age)
// Setelah resetAge: {Andi 0}
fmt.Println("Setelah resetAge:", user)
user.Rename("Joko")
// Setelah Rename: {Joko 0}
fmt.Println("Setelah Rename:", user)
// Bikin struct langsung dalam bentuk pointer
userPtr := &User{
Name: "Siti",
Age: 30,
}
// Ga usah lagi pake *
changeNameByPointer(userPtr)
fmt.Println("User pointer:", userPtr.Name, userPtr.Age)
}
package main
import "fmt"
// =====================
// INT
// =====================
// value (ga ngaruh)
func addByValue(x int) {
x = x + 10
}
// pointer (ngaruh)
func addByPointer(x *int) {
*x = *x + 10
}
// =====================
// STRING
// =====================
// value
func changeNameByValue(name string) {
name = "Andi"
}
// pointer
func changeNameByPointer(name *string) {
*name = "Andi"
}
// =====================
// BOOL
// =====================
// value
func setActiveByValue(active bool) {
active = true
}
// pointer
func setActiveByPointer(active *bool) {
*active = true
}
// =====================
// MAIN
// =====================
func main() {
// ---- INT
age := 20
addByValue(age)
fmt.Println("INT value:", age) // 20
addByPointer(&age)
fmt.Println("INT pointer:", age) // 30
// ---- STRING
name := "Budi"
changeNameByValue(name)
fmt.Println("STRING value:", name) // Budi
changeNameByPointer(&name)
fmt.Println("STRING pointer:", name) // Andi
// ---- BOOL
isActive := false
setActiveByValue(isActive)
fmt.Println("BOOL value:", isActive) // false
setActiveByPointer(&isActive)
fmt.Println("BOOL pointer:", isActive) // true
}
package main
import "fmt"
func main() {
// =====================
// STRING
// =====================
name := "Budi"
x := &name // x pegang alamat name
fmt.Println(*x) // buka isi alamat -> "Budi"
*x = "Andi" // ubah isi alamat
fmt.Println(name) // name ikut berubah -> "Andi"
// =====================
// INT
// =====================
age := 25
y := &age // y pegang alamat age
fmt.Println(*y) // 25
*y = 30 // ubah isi alamat
fmt.Println(age) // 30
}

Comments are disabled for this gist.