package main
import (
"fmt"
"io/ioutil"
"math"
"math/cmplx"
)
//函数外定义变量,必须使用关键字作为开头,不能使用:=定义变量,作用域在包的内部
var aa =3
var bb ="ddd"
//可以使用var () 来定义多个变量
var (
ss ="tt"
dd =true
)
//不初始化,编译器自己赋空值
func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n",a,s)
}
//初始化
func variableInitialValue() {
var a,bint =2,4
var sstring ="adc"
fmt.Println(a,b,s)
}
//类型推断
func variableTypeDeduction() {
var a,b,c,d =3,4,true,"dfg"
fmt.Println(a,b,c,d)
}
//使用:= 定义变量的变量不能在使用:=赋值,要使用=赋值,并且类型一致
func variableShorter() {
a,b,c,d :="a",1,true,4.9
a ="字符串"
fmt.Println(a,b,c,d)
}
/**内建变量
bool string
(u)int (u)int8 (u)int16 (u)int32 (u)int64 uintptr指针
byte:8位 int8的别名
rune:go语言字符型 32位 int32的别名 4字节
float32 float64 complex64 complex128
*/
//欧拉公式
func euler() {
//复数
//c := 3 + 4i
//fmt.Println(cmplx.Abs(c))
//complex64 实部和虚部是float32 complex128 实部和虚部是float64 导致值算出来不等于0
//fmt.Println(cmplx.Pow(math.E,1i *math.Pi) + 1)
//fmt.Println(cmplx.Exp(1i *math.Pi) + 1)
fmt.Printf("%.3f\n",cmplx.Exp(1i * math.Pi) +1)
}
//go语言强制类型转换
func triangle() {
var a,bint =3,4
var c int
c = int(math.Sqrt(float64(a * a + b * b)))
fmt.Println(c)
}
//常量的定义,不用大写,可以指定类型,也可以不指定,不指定类型a,b的类型是不确定的
//可以定义在包内部,所有函数可以使用,const数值可以作为各种类型使用
func consts() {
const(
filename ="gfgf.text"
a,b =3,4
)
var c int
c = int(math.Sqrt(a *a +b *b))
fmt.Println(filename,c)
}
//枚举 iota表示自增值 “_”表示跳过 << 左移
func enums() {
const (
cpp =iota
_
python
golang
js
)
fmt.Println(cpp,python,golang,js)
//b,kb,mb,gb,tb,pb
const (
b =1 << (10 *iota)
kb
mb
gb
tb
pb
)
fmt.Println(b,kb,mb,gb,tb,pb)
}
//条件语句里可以赋值,值的范围在条件语句里
func iff() {
const filename ="abc.txt"
//读取文件函数 ioutil.ReadFile()
//
//contents,err := ioutil.ReadFile(filename)
//if err != nil {
// fmt.Println(err)
//} else {
// fmt.Printf("%s\n",contents)
//}
if contents,err := ioutil.ReadFile(filename); err != nil {
fmt.Println(err)
}else{
fmt.Printf("%s\n",contents)
}
}
//switch 不需要加break 会自动加 除非使用fallthrough
func eval(a,b int,op string) int {
var result int
switch op {
case "+":
result = a + b
case "-":
result = a - b
case "*":
result = a * b
case "/":
result = a / b
default:
panic("unsupported operator:" + op)//报错
}
return result;
}
//switch后面可以不跟表达式,在case里跟判断语句
func grade(score int) string {
g :=""
switch {
case score <0 || score >100:
panic(fmt.Sprintf("wrong score: %d",score))
case score <60:
g ="F"
case score <80:
g ="C"
case score <90:
g ="B"
case score <=100:
g ="A"
}
return g
}
func main() {
fmt.Println("hlleo go")
//
variableZeroValue()
//
variableInitialValue()
//
variableTypeDeduction()
//
variableShorter()
//
fmt.Println(aa,bb,dd,ss)
//
euler()
//
triangle()
//
consts()
//
enums()
//
iff()
//
fmt.Println(
eval(10,2,"-"),
eval(10,2,"+"),
eval(10,2,"*"),
eval(10,2,"/"),
)
//
fmt.Println(grade(0))
fmt.Println(grade(59))
fmt.Println(grade(70))
fmt.Println(grade(90))
fmt.Println(grade(100))
fmt.Println(grade(101))
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
离散数学及其应用(原书第6版·本科教学版)
[美] Kenneth H. Rosen / 袁崇义、屈婉玲、张桂芸 / 机械工业出版社 / 2011-11 / 49.00元
《离散数学及其应用》一书是介绍离散数学理论和方法的经典教材,已经成为采用率最高的离散数学教材,仅在美国就被600多所高校用作教材,并获得了极大的成功。第6版在前5版的基础上做了大量的改进,使其成为更有效的教学工具。 本书基于该书第6版进行改编,保留了国内离散数学课程涉及的基本内容,更加适合作为国内高校计算机及相关专业本科生的离散数学课程教材。本书的具体改编情况如下: · 补充了关于范式......一起来看看 《离散数学及其应用(原书第6版·本科教学版)》 这本书的介绍吧!