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)
}

运行结果

posted @ 2022-01-16 23:39  努力跟上大神的脚步  阅读(383)  评论(0编辑  收藏  举报