首页 go

package main

import "fmt"

func main() {
    fmt.Println("hello world")
}
// 最经典的go
package main

import "fmt"

const boilingF = 212.0

func main() {
    var f = boilingF
    var c = (f - 32) * 5 / 9
    fmt.Printf("%g, %g", f, c)
}
// output:
// 212, 100
// 注意其中常量,函数,变量的使用
package main

import "fmt"

func main() {
    const frezingF, boilingF = 32.0, 212.0
    fmt.Printf("%g, %g", frezingF, fToC(frezingF))
    fmt.Printf(" %g, %g", boilingF, fToC(boilingF))
}

func fToC(f float64) float64 {
    return (f - 32) * 5 / 9
}
// output:
// 32, 0 212, 100
// 注意函数的声明
package main

import "fmt"

func main() {
    var s string
    fmt.Println(s)
}
// 注意如何声明变量
var i, j, k int
var b, f, s = true, 2.3, "four"

// 第一行的三个变量类型都是int
// 第二行的变量累心分别为bool,float64,string

// 初始化表达式可以是字面量或者任意的表达式
anim := rand.Float64() * 3.0
t := 0.0
// 简短变量声明

f, err := os.Open("name")
// 处理可能有err的代码
// 注意不能重复给一个或多个变量名使用简短变量声明,会报错
x := 1
p := &x
fmt.Println(p)
*p = 8
fmt.Println(x)
// 和c一样
// 注意指针的零值为:`nil`
package main

import "fmt"

func main() {
    fmt.Println(f() == f())
}

func f() *int {
    v := 1
    return &v
}
// output:
// false
// 因为两次的地址值是不一样的,返回函数中局部变量的地址也是安全的
p := new(int)
fmt.Println(p)
// new创建该类型的变量,初始化为该类型的零值
x = 1                       // 命名变量的赋值
*p = true                   // 通过指针间接赋值
person.name = "bob"         // 结构体字段赋值
count[x] = count[x] * scale // 数组、slice或map的元素赋值
// 支持自增与自减
// 支持多个值同时更新且无影响
// 经典的gcd(最大公约数)函数
func gcd(x, y int) int {
    for y != 0 {
        x, y = y, x%y
    }
    return x
}
package main

import "fmt"

type celsius float64

const (
    p celsius = 0.0
)

func main() {
    var c celsius
    fmt.Println(c)
    fmt.Println(p)
}
// 别名



文章评论