• Go语言趣学指南lesson2


    被美化的计算器

    本章学习目标

    1. 学会让计算机执行数学运算
    2. 学会声明变量和常量
    3. 了解声明和赋值的区别
    4. 学会使用标准库生成伪随机数

    执行运算

    • Go和其他编程语言一样,提供+、-、*、/和%等算术操作符
    • 例子(2.1)

      package main
      
      // 我的体重程序
      import (
      	"fmt"
      )
      
      //main是开始函数
      func main() {
      	fmt.Print("My weight in the surface of Mars is ")
      	fmt.Print(149.0 * 0.3783) //打印 56.3667
      	fmt.Print(" lbs, and I would be ")
      	fmt.Print(41 * 365 / 687) // 打印21
      	fmt.Print(" years old.")
      }
      
      /*
      执行结果:
      My weight in the surface of Mars is 56.3667 lbs, and I would be 21 years old.
      */
      
      
      • 当Go在代码中 发现//双斜杠和/**/的时候,会自动忽略,这就是注释
      • 例子2.1中多次调用fmt.Print函数,以便完整句子显示在同一行,其实fmt中有另一种函数可以达到目的,那就是fmt.Println,请看例子2.2
    • 例子(2.2)

      package main
      
      // 我的体重程序
      import (
      	"fmt"
      )
      
      //main是开始函数
      func main() {
      	/*
      		fmt.Print("My weight in the surface of Mars is ")
      		fmt.Print(149.0 * 0.3783) //打印 56.3667
      		fmt.Print(" lbs, and I would be ")
      		fmt.Print(41 * 365 / 687) // 打印21
      		fmt.Print(" years old.")
      	*/
      	fmt.Println("My weight in the surface of Mars is ", 149.0*0.3783, " lbs, and I would be ", 41*365/687, "years old.")
      }
      
      /*
      执行结果:
      My weight in the surface of Mars is 56.3667 lbs, and I would be 21 years old.
      */
      
      
      • Fat.Println函数传递多个参数的时候用,逗号分隔

    格式化输出

    • 使用fmt.Printf来控制打印的输出结果

    • 与fmt.Print和fmt.Println不同,fit.Printf的第一个参数必须为字符串

      • 这个字符串里面包含了像%v这样的格式化动词,它的值由第二个参数的值所代替。

      • 如果指定多个格式化动词,那么它们的值由后边的参数值按其顺序进行替换

      • 例子(2.3)

        package main
        
        import (
        	"fmt"
        )
        
        func main() {
        	fmt.Printf("My weight in the surface of Mars is %v lbs,", 149.0*0.3783)
        	fmt.Printf("and I would be %v years old.\n", 41*365/687)
        }
        
        /*
        执行结果:
        My weight in the surface of Mars is 56.3667 lbs,and I would be 21 years old.
        
        */
        
        
    • 使用fmt.Printf对齐文本

      • 在格式化动词里面指定宽度,就可以对齐文本。

        • 例如:%4v,就是向左填充到足够4个宽度
      • 正数,向左填充空格。

      • 负数,向右填充空格。

      • 例子(2.4)

        package main
        
        import (
        	"fmt"
        )
        
        func main() {
        	fmt.Printf("%-15v $%4v\n", "SpaceX", 94)
        	fmt.Printf("%-15v $%4v\n", "Virgin Galactic", 100)
        }
        
        /*
        执行结果:
        SpaceX          $  94
        Virgin Galactic $ 100
        */
        
        

    常量和变量

    • const,用来声明常量

      • 常量的值不可变
    • var,用来声明变量

      • 要使用变量首选需要进行声明
    • 例子(2.5)

      package main
      
      import (
      	"fmt"
      )
      
      func main() {
      	const lightSpeed = 299792 // km/s
      	var distance = 56000000   // km
      	fmt.Println(distance/lightSpeed, "seconds")
      	distance = 401000000
      	fmt.Println(distance/lightSpeed, "seconds")
      }
      
      /*
      执行结果:
      186 seconds
      1337 seconds
      */
      
      
    • 同时声明多个变量

      • 例子(2.6)

        package main
        
        import (
        	"fmt"
        )
        
        func main() {
        	/*
        	const lightSpeed = 299792 // km/s
        	var distance = 56000000   // km
        	fmt.Println(distance/lightSpeed, "seconds")
        	distance = 401000000
        	fmt.Println(distance/lightSpeed, "seconds")
        	*/
        	var distance = 5000000
        	var speed = 108000
        	
          // 一次声明一组变量
        	var (
        		distance = 20000
        		speed = 22222
        	)
          // 也可以在一行声明多个变量
        	var distance, speed = 40000, 20000
        	const a, b = 23, 60
        }
        
    • 赋值操作符

      • 例子(2.7)

        package main
        
        import (
        	"fmt"
        )
        
        func main() {
        	var weight = 149.0
        	weight = weight * 0.3783 // 把计算后的值再次赋值给变量weight
        	weight *= 0.3783         // 是上一行的简写
        	fmt.Println("weight的结果:", weight)
        }
        
        /*
        执行结果:
        weight的结果: 21.32352261
        */
        
        

    猜数字

    • 使用rand包,生成伪随机数

      • 例如,Intn函数 可以返回一个指定范围的随机整数。

      • Import 的路径是 "math/rand"

      • 例子(2.8)

        package main
        
        import (
        	"fmt"
        	"math/rand"
        )
        
        func main() {
        	var num = rand.Intn(10) + 1 // 生成的范围不包括10 所以+1
        	fmt.Println(num)
        	// num = rand.Intn(10) + 1
        	// fmt.Println(num)
        }
        
        /*
        执行结果:
        2
        */
        
        

    课后小习题

    Malacandra是C.S.Lewis在太空三部曲中给火星起的另外一个名字,编写程序来确认飞船在28天内到达Malacandra的进行速度(公里/小时),假设距离为56000000公里。

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	var distance = 56000000
    	const (
    		day  = 28
    		hour = 24
    	)
    	fmt.Println("结果", distance/(day*hour), "km/h")
    }
    
    /*
    执行结果:
    结果 83333 km/h
    */
    
    
  • 相关阅读:
    redis实现与分析
    NULL, '',0 '0'的区别
    Linux strace命令
    strcpy和memcpy的区别
    图书推荐
    php与mysql通讯那点事
    linux命令汇总
    linux系统信息查询及相关概念
    LNMP zabbix安装
    lftp查看文件时间与登录服务查看文件时间相差8小时
  • 原文地址:https://www.cnblogs.com/walker1024/p/14152493.html
Copyright © 2020-2023  润新知