1 代码片段1

1.chan-数据交换

package main

import (
    "fmt"
    "time"
)

func add(a int,b int,c chan int){
    sum :=a+b
    time.Sleep(3*time.Second)
    c<-sum
}


func main(){
    pipe:=make(chan int,1)
    
    go add(10,20,pipe)
    
    sum:= <-pipe
    
    fmt.Println("10+20=",sum)
}

 

2.函数返回2个值

package main

import (
    "fmt"
    "time"
)

func calc(a int, b int) (int, int) {
    sum := a + b
    avg := (a + b) / 2
    return sum,avg
}

func add(a int, b int, c chan int) {
    sum := a + b
    time.Sleep(3 * time.Second)
    c <- sum
}

func main() {

    sum, avg := calc(10, 20) // sum, _ := calc(10, 20)
    
    fmt.Println("sum=", sum,"avg=",avg)
}

 3.随机数rand

package main

import (
    "math/rand"
    "fmt"
    "time"
)

func main() {
    rand.Seed(time.Now().Unix())
    //10个随机数
    for i := 0; i < 10; i++ {
        a := rand.Int()
        fmt.Println(a)
    }
    
    for i := 0; i < 10; i++ {
        a:=rand.Intn(100)
        fmt.Println(a)
    }
    
    for i := 0; i < 10; i++ {
        a:=rand.Float32()
        fmt.Println(a)
    }
}

4.fmt的scanf格式化输出

package main

import "fmt"

func main() {
    var a int
    var b bool
    c:= 'a'
    
    fmt.Printf("%v\n",a)//相应值的默认格式。在打印结构体时,“加号”标记(%+v)会添加字段名
    fmt.Printf("%v\n",b)
    fmt.Printf("%v\n",c)
    
    fmt.Printf("%+v\n",a)//相应值go语法表示
    fmt.Printf("%#v\n",b)
    fmt.Printf("%#v\n",c)
    fmt.Printf("%T\n",c) //打印出值的类型
    fmt.Printf("90%%\n") //转义百分号
    fmt.Printf("%t\n",b) //单词true 或 false
    fmt.Printf("%b\n",100) //二进制打印
    fmt.Printf("%s\n","hello word") //字符串
    
    fmt.Printf("%q\n","this is a test") //双引号围绕的字符串,由Go语法安全地转义
    
    fmt.Printf("%x\n",5486) //十六进制小写
    fmt.Printf("%X\n",5486) //十六进制大写
    
    fmt.Printf("%p\n",&c)  //打印指针
    
    str := fmt.Sprintf("a = %d",100) //打印到变量,数字转换成字符串
    fmt.Printf("%q",str)

    a:=strconv.Itoa(10)


  fmt.Printf("%T\n",a)//string
  fmt.Printf("%v\n",a)//10
  fmt.Printf("%#v\n",a)//"10"
  fmt.Printf("%q\n",a)//"10"
}

 5 素数

package main

import (
    "fmt"
    "math"
)

//100-200之间的素数

func is_sushu(num int) bool {
    for i := 2; i <= int(math.Sqrt(float64(num))); i++ {
        if num % i == 0 {
            return false
        }
    }
    return true
}

func main() {
    var (
        a int
        b int
    )

    fmt.Scanf("%d,%d", &a, &b)
    for i := a; i <= b; i++ {
        if is_sushu(i) {
            fmt.Printf("%d是素数\n", i)
        } else {
            fmt.Printf("%d不是素数\n", i)
        }
    }

}

6 水仙花数

package main

import "fmt"

//水仙花数

func is_shuixianhua(a int) bool {
    var i, j, k int
    i = a % 10
    j = (a / 10) % 10
    k = (a / 100) % 10
    return a == i * i * i + j * j * j + k * k * k
}

func main() {
    var a, b int
    fmt.Scanf("%d%d", &a, &b)
    fmt.Println(a, b)

    for i := a; i < b; i++ {
        if is_shuixianhua(i) {
            fmt.Printf("%d 是水仙花数\n", i)
        }
    }

}

 

7 阶乘和

package main

import "fmt"

func jiecheng(a int) int64{
    var result int64 = 0

    for i:=1;i<=a;i++{
        //求i的阶乘
        var sum int = 1
        for j := 1; j <= i; j++ {
            sum = sum*j
        }

        result = result+int64(sum)
    }

    return result

}

func jie_cheng2(num int) int64{
    var s int64 = 0
    var sum int64 = 1
    for i:=1;i<=num;i++ {
        //sum 存i的阶乘
        sum = sum*int64(i)
        s = s+sum
    }
    return s
}


func main() {
    var a = 5

    s:=jiecheng(a)
    fmt.Println(s)

    s=jie_cheng2(a)
    fmt.Println(s)
}

 

posted @ 2018-10-20 17:56  jec1999  阅读(151)  评论(0编辑  收藏  举报