mirror of
https://github.com/jackyzha0/quartz.git
synced 2025-12-27 23:04:05 -06:00
update golang
This commit is contained in:
parent
ba6437844c
commit
b074f149fe
@ -0,0 +1,383 @@
|
|||||||
|
|
||||||
|
|
||||||
|
********************************************************************************
|
||||||
|
Golang - Asterisk and Ampersand Cheatsheet
|
||||||
|
********************************************************************************
|
||||||
|
|
||||||
|
Also available at: https://play.golang.org/p/lNpnS9j1ma
|
||||||
|
|
||||||
|
Allowed:
|
||||||
|
--------
|
||||||
|
```go
|
||||||
|
/*
|
||||||
|
|
||||||
|
********************************************************************************
|
||||||
|
|
||||||
|
Golang - Asterisk and Ampersand Cheatsheet
|
||||||
|
|
||||||
|
********************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Allowed:
|
||||||
|
|
||||||
|
--------
|
||||||
|
|
||||||
|
p := Person{"Hillary", 28} stores the value
|
||||||
|
|
||||||
|
p := &Person{"Hillary", 28} stores the pointer address (reference)
|
||||||
|
|
||||||
|
PrintPerson(p) passes either the value or pointer address (reference)
|
||||||
|
|
||||||
|
PrintPerson(*p) passes the value
|
||||||
|
|
||||||
|
PrintPerson(&p) passes the pointer address (reference)
|
||||||
|
|
||||||
|
func PrintPerson(p Person) ONLY receives the value
|
||||||
|
|
||||||
|
func PrintPerson(p *Person) ONLY receives the pointer address (reference)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Not Allowed:
|
||||||
|
|
||||||
|
--------
|
||||||
|
|
||||||
|
p := *Person{"Hillary", 28} illegal
|
||||||
|
|
||||||
|
func PrintPerson(p &Person) illegal
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import (
|
||||||
|
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
type Erdem struct {
|
||||||
|
|
||||||
|
CodingSkillPercent int
|
||||||
|
|
||||||
|
Occupation string
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
type Person struct {
|
||||||
|
|
||||||
|
Name string
|
||||||
|
|
||||||
|
Age int
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// This only works with *Person, does not work with Person
|
||||||
|
|
||||||
|
// Only works with Test 2 and Test 3
|
||||||
|
|
||||||
|
func (p *Person) String() string {
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s is %d", p.Name, p.Age)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// This works with both *Person and Person, BUT you can't modiy the value and
|
||||||
|
|
||||||
|
// it takes up more space
|
||||||
|
|
||||||
|
// Works with Test 1, Test 2, Test 3, and Test 4
|
||||||
|
|
||||||
|
/*func (p Person) String() string {
|
||||||
|
|
||||||
|
return fmt.Sprintf("%s is %d", p.Name, p.Age)
|
||||||
|
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
// Test 1 - Pass by Value
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func test1() {
|
||||||
|
|
||||||
|
fmt.Println("Test 1")
|
||||||
|
|
||||||
|
p := Person{"Hillary", 28}
|
||||||
|
|
||||||
|
printPerson1(p)
|
||||||
|
|
||||||
|
updatePerson1(p)
|
||||||
|
|
||||||
|
printPerson1(p)
|
||||||
|
|
||||||
|
fmt.Println("Test 1 ENDS")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func updatePerson1(p Person) {
|
||||||
|
|
||||||
|
p.Age = 32
|
||||||
|
|
||||||
|
printPerson1(p)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func printPerson1(p Person) {
|
||||||
|
|
||||||
|
fmt.Printf("String: %v | Name: %v | Age: %d\n",
|
||||||
|
|
||||||
|
p,
|
||||||
|
|
||||||
|
p.Name,
|
||||||
|
|
||||||
|
p.Age)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
// Test 2 - Pass by Reference
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func test2() {
|
||||||
|
|
||||||
|
fmt.Println("Test 2")
|
||||||
|
|
||||||
|
p := &Person{"Hillary", 28}
|
||||||
|
|
||||||
|
printPerson2(p)
|
||||||
|
|
||||||
|
updatePerson2(p)
|
||||||
|
|
||||||
|
printPerson2(p)
|
||||||
|
|
||||||
|
fmt.Println("Test 2 ENDS")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func updatePerson2(p *Person) {
|
||||||
|
|
||||||
|
p.Age = 32
|
||||||
|
|
||||||
|
printPerson2(p)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func printPerson2(p *Person) {
|
||||||
|
|
||||||
|
fmt.Printf("String: %v | Name: %v | Age: %d\n",
|
||||||
|
|
||||||
|
p,
|
||||||
|
|
||||||
|
p.Name,
|
||||||
|
|
||||||
|
p.Age)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
// Test 3 - Pass by Reference (requires more typing)
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func test3() {
|
||||||
|
|
||||||
|
fmt.Println("Test 3")
|
||||||
|
|
||||||
|
p := Person{"Hillary", 28}
|
||||||
|
|
||||||
|
printPerson3(&p)
|
||||||
|
|
||||||
|
updatePerson3(&p)
|
||||||
|
|
||||||
|
printPerson3(&p)
|
||||||
|
|
||||||
|
fmt.Println("Test 3 ENDS")
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func updatePerson3(p *Person) {
|
||||||
|
|
||||||
|
p.Age = 32
|
||||||
|
|
||||||
|
printPerson3(p)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func printPerson3(p *Person) {
|
||||||
|
|
||||||
|
fmt.Printf("String: %v | Name: %v | Age: %d\n",
|
||||||
|
|
||||||
|
p,
|
||||||
|
|
||||||
|
p.Name,
|
||||||
|
|
||||||
|
p.Age)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
// Test 4 - Pass by Value (requires more typing)
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func test4() {
|
||||||
|
|
||||||
|
p := &Person{"Hillary", 28}
|
||||||
|
|
||||||
|
printPerson4(*p)
|
||||||
|
|
||||||
|
updatePerson4(*p)
|
||||||
|
|
||||||
|
printPerson4(*p)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func updatePerson4(p Person) {
|
||||||
|
|
||||||
|
p.Age = 32
|
||||||
|
|
||||||
|
printPerson4(p)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func printPerson4(p Person) {
|
||||||
|
|
||||||
|
fmt.Printf("String: %v | Name: %v | Age: %d\n",
|
||||||
|
|
||||||
|
p,
|
||||||
|
|
||||||
|
p.Name,
|
||||||
|
|
||||||
|
p.Age)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
// Main
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
String: {Hillary 28} | Name: Hillary | Age: 28
|
||||||
|
|
||||||
|
String: {Hillary 32} | Name: Hillary | Age: 32
|
||||||
|
|
||||||
|
String: {Hillary 28} | Name: Hillary | Age: 28
|
||||||
|
|
||||||
|
String: Hillary is 28 | Name: Hillary | Age: 28
|
||||||
|
|
||||||
|
String: Hillary is 32 | Name: Hillary | Age: 32
|
||||||
|
|
||||||
|
String: Hillary is 32 | Name: Hillary | Age: 32
|
||||||
|
|
||||||
|
String: Hillary is 28 | Name: Hillary | Age: 28
|
||||||
|
|
||||||
|
String: Hillary is 32 | Name: Hillary | Age: 32
|
||||||
|
|
||||||
|
String: Hillary is 32 | Name: Hillary | Age: 32
|
||||||
|
|
||||||
|
String: {Hillary 28} | Name: Hillary | Age: 28
|
||||||
|
|
||||||
|
String: {Hillary 32} | Name: Hillary | Age: 32
|
||||||
|
|
||||||
|
String: {Hillary 28} | Name: Hillary | Age: 28
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
test1()
|
||||||
|
|
||||||
|
test2()
|
||||||
|
|
||||||
|
test3()
|
||||||
|
|
||||||
|
test4()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// *****************************************************************************
|
||||||
|
// Main
|
||||||
|
// *****************************************************************************
|
||||||
|
|
||||||
|
/*
|
||||||
|
Outputs:
|
||||||
|
String: {Steve 28} | Name: Steve | Age: 28
|
||||||
|
String: {Steve 32} | Name: Steve | Age: 32
|
||||||
|
String: {Steve 28} | Name: Steve | Age: 28
|
||||||
|
String: Steve is 28 | Name: Steve | Age: 28
|
||||||
|
String: Steve is 32 | Name: Steve | Age: 32
|
||||||
|
String: Steve is 32 | Name: Steve | Age: 32
|
||||||
|
String: Steve is 28 | Name: Steve | Age: 28
|
||||||
|
String: Steve is 32 | Name: Steve | Age: 32
|
||||||
|
String: Steve is 32 | Name: Steve | Age: 32
|
||||||
|
String: {Steve 28} | Name: Steve | Age: 28
|
||||||
|
String: {Steve 32} | Name: Steve | Age: 32
|
||||||
|
String: {Steve 28} | Name: Steve | Age: 28
|
||||||
|
*/
|
||||||
|
func main() {
|
||||||
|
test1()
|
||||||
|
test2()
|
||||||
|
test3()
|
||||||
|
test4()
|
||||||
|
}
|
||||||
|
```
|
||||||
Loading…
Reference in New Issue
Block a user