zoukankan      html  css  js  c++  java
  • GoLang 之旅(一)

    输出Hello World

    package main
    
    import "fmt"
    
    func main() {
        fmt.Println("Hello, 世界")
    }

    导入math/rand包输出随机数

    package main
    
    import (
    	"fmt"
    	"math/rand"
    )
    
    func main() {
    	fmt.Println("My favorite number is", rand.Intn(10))
    }

    导入math包使用开根号功能

    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    func main() {
    	fmt.Printf("Now you have %g problems.
    ", math.Sqrt(7))
    }

    已导出的包要大写

    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    func main() {
    	fmt.Println(math.Pi)
    }

    函数传参数

    package main
    
    import "fmt"
    
    func add(x int, y int) int {
    	return x + y
    }
    
    func main() {
    	fmt.Println(add(42, 13))
    }

    函数传多个参数,除最后一个参数意外,其他参数类型可以省略

    package main
    
    import "fmt"
    
    func add(x, y int) int {
    	return x + y
    }
    
    func main() {
    	fmt.Println(add(42, 13))
    }

    函数可以返回任意数量的值

    package main
    
    import "fmt"
    
    func swap(x, y string) (string, string) {
    	return y, x
    }
    
    func main() {
    	a, b := swap("hello", "world")
    	fmt.Println(a, b)
    }

    命名返回值,直接返回的语句,可以返回已命名的返回值

    package main
    
    import "fmt"
    
    func split(sum int) (x, y int) {
    	x = sum * 4 / 9
    	y = sum - x
    	return
    }
    
    func main() {
    	fmt.Println(split(17))
    }

    // 输出 7 10

    var声明变量列表

    package main
    
    import "fmt"
    
    var c, python, java bool
    
    func main() {
    	var i int
    	fmt.Println(i, c, python, java)
    }

    输出 0 false false false

    变量初始化

    package main
    
    import "fmt"
    
    var i, j int = 1, 2
    
    func main() {
    	var c, python, java = true, false, "no!"
    	fmt.Println(i, j, c, python, java)
    }

    输出 1 2 true false no!

    短变量声明,类型明确的情况下可用,:= 只能在函数内使用

    package main
    
    import "fmt"
    
    func main() {
    	var i, j int = 1, 2
    	k := 3
    	c, python, java := true, false, "no!"
    
    	fmt.Println(i, j, k, c, python, java)
    }

    输出 1 2 3 true false no!

    Go的基本类型

    bool
    
    string
    
    int  int8  int16  int32  int64
    uint uint8 uint16 uint32 uint64 uintptr
    
    byte // uint8 的别名
    
    rune // int32 的别名
         // 表示一个 Unicode 码点
    
    float32 float64
    
    complex64 complex128
    package main
    
    import (
    	"fmt"
    	"math/cmplx"
    )
    
    var (
    	ToBe   bool       = false
    	MaxInt uint64     = 1<<64 - 1
    	z      complex128 = cmplx.Sqrt(-5 + 12i)
    )
    
    func main() {
    	fmt.Printf("Type: %T Value: %v
    ", ToBe, ToBe)
    	fmt.Printf("Type: %T Value: %v
    ", MaxInt, MaxInt)
    	fmt.Printf("Type: %T Value: %v
    ", z, z)
    }

    输出

    Type: bool Value: false
    Type: uint64 Value: 18446744073709551615
    Type: complex128 Value: (2+3i)

    零值,未被赋值的地方会赋予零值

    package main
    
    import "fmt"
    
    func main() {
    	var i int
    	var f float64
    	var b bool
    	var s string
    	fmt.Printf("%v %v %v %q
    ", i, f, b, s)
    }

    输出 0 0 false ""

    类型转换

    表达式 T(v) 将值 v 转换为类型 T

    一些关于数值的转换:

    var i int = 42
    var f float64 = float64(i)
    var u uint = uint(f)

    或者,更加简单的形式:

    i := 42
    f := float64(i)
    u := uint(f)
    

      

    package main
    
    import (
    	"fmt"
    	"math"
    )
    
    func main() {
    	var x, y int = 3, 4
    	var f float64 = math.Sqrt(float64(x*x + y*y))
    	var z uint = uint(f)
    	fmt.Println(x, y, z)
    }

    输出 3 4 5

    类型推导

    在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。

    当右值声明了类型时,新变量的类型与其相同:

    var i int
    j := i // j 也是一个 int

    不过当右边包含未指明类型的数值常量时,新变量的类型就可能是 intfloat64 或 complex128 了,这取决于常量的精度:

    i := 42           // int
    f := 3.142        // float64
    g := 0.867 + 0.5i // complex128
    package main
    
    import "fmt"
    
    func main() {
    	v := 42 // 修改这里!
    	fmt.Printf("v is of type %T
    ", v)
    }
    输出 v is of type int 

    常量,关键字const,字符,字符串,布尔值和数值

    package main
    
    import "fmt"
    
    const Pi = 3.14
    
    func main() {
    	const World = "世界"
    	fmt.Println("Hello", World)
    	fmt.Println("Happy", Pi, "Day")
    
    	const Truth = true
    	fmt.Println("Go rules?", Truth)
    }

    输出

    Hello 世界
    Happy 3.14 Day
    Go rules? true

    数值常量

    数值常量是高精度的 

    一个未指定类型的常量由上下文来决定其类型

    int 类型最大可以存储一个 64 位的整数,有时会更小

    package main
    
    import "fmt"
    
    const (
    	// 将 1 左移 100 位来创建一个非常大的数字
    	// 即这个数的二进制是 1 后面跟着 100 个 0
    	Big = 1 << 100
    	// 再往右移 99 位,即 Small = 1 << 1,或者说 Small = 2
    	Small = Big >> 99
    )
    
    func needInt(x int) int { return x*10 + 1 }
    func needFloat(x float64) float64 {
    	return x * 0.1
    }
    
    func main() {
    	fmt.Println(needInt(Small))
    	fmt.Println(needFloat(Small))
    	fmt.Println(needFloat(Big))
    }
    // 输出
    // 21 // 0.2 // 1.2676506002282295e+29                      
  • 相关阅读:
    sqlite数据库的基本操作
    java-正则表达式判断移动联通电信手机号
    基金新手常识
    Android 心跳包心跳连接 如何实现android和服务器长连接呢?推送消息的原理
    java 设计模式之模板方法
    Android 自定义view实现水波纹效果
    Android中pendingIntent的深入理解
    CentOS 7.X下 -- 配置nginx正向代理支持https
    自动化运维工具saltstack04 -- 之jinja模板
    自动化运维工具saltstack03 -- 之SaltStack的数据系统
  • 原文地址:https://www.cnblogs.com/YC-L/p/12150514.html
Copyright © 2011-2022 走看看