mirror of
https://github.com/teivah/100-go-mistakes.git
synced 2026-06-20 16:45:56 +08:00
64 lines
1.1 KiB
Go
64 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type account struct {
|
|
balance float32
|
|
}
|
|
|
|
func main() {
|
|
accounts := createAccounts()
|
|
for _, a := range accounts {
|
|
a.balance += 1000
|
|
}
|
|
fmt.Println(accounts)
|
|
|
|
accounts = createAccounts()
|
|
for i := range accounts {
|
|
accounts[i].balance += 1000
|
|
}
|
|
fmt.Println(accounts)
|
|
|
|
accounts = createAccounts()
|
|
for i := 0; i < len(accounts); i++ {
|
|
accounts[i].balance += 1000
|
|
}
|
|
fmt.Println(accounts)
|
|
|
|
accountsPtr := createAccountsPtr()
|
|
for _, a := range accountsPtr {
|
|
a.balance += 1000
|
|
}
|
|
printAccountsPtr(accountsPtr)
|
|
}
|
|
|
|
func createAccounts() []account {
|
|
return []account{
|
|
{balance: 100.},
|
|
{balance: 200.},
|
|
{balance: 300.},
|
|
}
|
|
}
|
|
|
|
func createAccountsPtr() []*account {
|
|
return []*account{
|
|
{balance: 100.},
|
|
{balance: 200.},
|
|
{balance: 300.},
|
|
}
|
|
}
|
|
|
|
func printAccountsPtr(accounts []*account) {
|
|
sb := strings.Builder{}
|
|
sb.WriteString("[")
|
|
s := make([]string, len(accounts))
|
|
for i, account := range accounts {
|
|
s[i] = fmt.Sprintf("{%.0f}", account.balance)
|
|
}
|
|
sb.WriteString(strings.Join(s, " "))
|
|
sb.WriteString("]")
|
|
fmt.Println(sb.String())
|
|
}
|