go学习之快速入门
课程内容
1.项目目录
2.go语言特点
3.go中的包概念
项目目录
理解gopath
个人开发项目目录
团队开发目录
go语言的特点
如何快速学习新语言
go的特点
1.没有命名空间
2.有c语言的结构体
3.声明的变量必须要使用
4.函数的返回值可以返回多个
...
go的关键词
go的保留字
golang语言中的4钟定义
变量的定义与转换
package main
import "fmt"
var ww string //全局使用正常声明
//批量定义变量
var (
name string = "cuihua"
age int = 19
sex string = "女"
)
func main() {
fmt.Println("ssssss")
var k string = "0000"
k = "p"
fmt.Println(k)
pdsd := "0"
fmt.Println(pdsd)
pdsd = "0000oooo" //在局部变量中,定义类型根据值的类型进行赋值;会隐式转换
fmt.Println(pdsd)
i := 0
fmt.Println(i)
}
常量的定义
package main
import "fmt"
const s = "这是全局常量"
//批量定义常量
const (
name = "李四"
age = 18
sex = "男"
)
func main() {
fmt.Println(s)
}
定义类型
格式 type 结构体名 (func/interface/struct)
package main
import "fmt"
//type fdao func()
type ih interface {
}
type user struct {
name string
age int
sex string
}
func main() {
th := user{
name: "哈哈",
age:22,
sex:"男",
}
fmt.Println(th)
}
定义方法&函数
格式 func 函数名(){} / func(结构体)方法名(){}
package main
import "fmt"
//type fdao func()
type ih interface {
}
//结构体
type user struct {
name string
age int
sex string
}
//方法
func (u user) toString() {
fmt.Println(u)
}
//方法
func (u user) getAge() int {
return u.age
}
//函数
func main() {
th := user{
name: "哈哈",
age:22,
sex:"男",
}
th.toString()
fmt.Println(th.getAge())
fmt.Println(th)
}
golang语言的作用域
golang的包概念
包的分类
go语言中的init和main
案例
计算器
基类
package operator
type Calculate struct {
numOne float64
numTwo float64
symbol string
}
func (c Calculate) GetNumOne() float64 {
return c.numOne
}
func (c Calculate) SetNumOne(numOne float64) Calculate {
c.numOne = numOne
return c
}
func (c Calculate) GetNumTwo() float64 {
return c.numTwo
}
func (c Calculate) SetNumTwo(numTwo float64) Calculate {
c.numTwo = numTwo
return c
}
func (c Calculate) GetSymbol() string {
return c.symbol
}
func (c Calculate) SetSymbol(symbol string) Calculate {
c.symbol = symbol
return c
}
实现类
package impl
import "calc/operator"
type Impl interface {
GetNumOne() float64
SetNumOne(numOne float64) operator.Calculate
GetNumTwo() float64
SetNumTwo(numOne float64) operator.Calculate
GetSymbol() string
SetSymbol(symbol string) operator.Calculate
}
主类
package main
import (
"calc/impl"
"calc/operator"
"fmt"
"strconv"
)
func main() {
var numOne string
var numTwo string
var symbol string
res := ""
fmt.Println("请输入第一个数字:\n")
fmt.Scan(&numOne)
fmt.Println("请输入符号(只支持+-*/):\n")
fmt.Scan(&symbol)
fmt.Println("请输入第二个数字:\n")
fmt.Scan(&numTwo)
var newNumOne, _ = strconv.ParseFloat(numOne,64)
var newNumTwo, _ = strconv.ParseFloat(numTwo,64)
var pi impl.Impl = new(operator.Calculate)
p := pi.SetSymbol(symbol)
n := pi.SetNumOne(newNumOne)
t := pi.SetNumTwo(newNumTwo)
switch p.GetSymbol() {
case "+":
res = strconv.FormatFloat(n.GetNumOne()+t.GetNumTwo(),'f',4,64)
break
case "-":
res = strconv.FormatFloat(n.GetNumOne()-t.GetNumTwo(),'f',4,64)
break
case "*":
res = strconv.FormatFloat(n.GetNumOne()*t.GetNumTwo(),'f',4,64)
break
case "/":
res = strconv.FormatFloat(n.GetNumOne()/t.GetNumTwo(),'f',4,64)
break
default:
res = ""
break
}
fmt.Println("结果是:\n")
fmt.Println(res)
}
运行结果