首页 > 其他分享 >GO——变量定义规范,,类型,,常量,,函数,,包

GO——变量定义规范,,类型,,常量,,函数,,包

时间:2024-04-03 15:58:57浏览次数:18  
标签:常量 int fmt var Println 函数 func GO 变量

# 1 变量定义规范
# 25关键字
    for if 。。。。
# 37个保留字
    int int8 panic 。。。
    
    
# 2 变量定义
    1 完整定义
    var 变量名  变量类型 = 变量值
    var 变量名 变量类型
    
    2 类型推导(变量类型在定义阶段固定了,后期不能改变)
    var 变量名 = 值
    
    3 简略声明 (左侧必须有未定义过的变量)
    变量名  :=  变量值
    
    4 变量不能重复定义,先定义在使用
    
    5 同时定义多个变量
        var a,b,c int =11,22,33
        var a,b,c  = 11,22,"33"
        a,b,c:=11,22,"33"
        
        var (
         name string
         age =99
        )
        
        
   6 变量定义后必须使用,否则报错

类型

# 每个变量都是有类型的,并且要求严格,一旦确定,后期不能改变

# go 基础数据类型
    -数字
        -整数:  int     int8     int16   int32    int64
            -表示整数范围不一样
                int8 占 1 个byte,一个字节,8个比特位--》表示范围 -2的7次方: -128 到  +127
                int16 占 2 个byte--》表示范围 负 2的15次方   到  正2的15次方-1 -32768~32767
                int32:-2147483648~2147483647
               int64:-9223372036854775808~9223372036854775807
            -int 跟平台有关系
                32位系统上是int32
                64位系统上是int64
                
        -正整数: uint   uint8     uint16   uint32    uint64
            uint8 :0到 255之间
            uint16:0~65535
            uint32 0~4294967295
            uint64:0~18446744073709551615
            
        
        -小数:   float32  float64
            float32:32 位浮点数
            float64:64 位浮点数
        -复数:  complex
            实部和虚部
         
        -byte : uint8   一个字节
        -rune : int32   一个字符
    
    -字符串    
        string:必须用 双引号 或 反引号
    
    -布尔类型
        bool :只有 true或false

------------------------------------
package main

import "fmt"

// ########## 变量类型##############
func main() {

    //1 整数类型
    var a int = 33333
    var a1 int8 = 127
    fmt.Println(a)
    fmt.Println(a1)

    // 2 正整数
    var a2 uint8 = 255
    fmt.Println(a2)

    // 3 浮点型(小数)
    var a3 float32 = 1.1234567890
    var a4 float64 = 1.1234567890123456789
    fmt.Println(a3)
    fmt.Println(a4)

    // 4 字符串
    var s string = "lqz is hadsome"
    var s1 string = `lqz xxfas 撒打发
asfsad
阿斯顿发
暗室逢灯
asdf阿瑟发d`
    fmt.Println(s)
    fmt.Println(s1)

    // 5 布尔
    var b bool = true
    b = false
    fmt.Println(b)

    // 6 byte类型===>uint8 --->256种变化---》ascii值--》一个字节
    //var bb byte = 255
    var bb byte = 'a'
    //var bb byte = 97
    fmt.Println(bb)
    fmt.Println(string(bb))
    // 李清照  [230, 157, 142, 230, 184, 133, 231, 133, 167]
    var abc []byte = []byte{230, 157, 142, 230, 184, 133, 231, 133, 167}
    var ssss = string(abc)
    fmt.Println(ssss)

    // 7 rune 类型---》int32---》4个字节---》unicode编码表示一个字符
    var rr rune = '照'
    var rr1 rune = 20013
    fmt.Println(rr)          // 20013
    fmt.Println(string(rr1)) //中   26446  28165  29031

    var abcd []rune = []rune{26446, 28165, 29031}
    fmt.Println(string(abcd))

    // 8 go是强类型语言--》不同类型不允许运算
    var aaa1 int8 = 99
    var aaa2 int32 = 99
    fmt.Println(aaa2 + int32(aaa1))
    
}

---------------------------------------
s='李清照'

b=s.encode('utf-8')
print(b) # '\xe6\x9d\x8e    \xe6\xb8\x85    \xe7\x85\xa7'   16 进制显示   字节数组16进制展示

# 十进制进制展示
aa=[ item for item in b]
print(aa)  # [230, 157, 142, 230, 184, 133, 231, 133, 167]

# 二进制展示
bb=[ bin(item)[2:] for item in b]
print(bb)  # ['11100110', '10011101', '10001110', '11100110', '10111000', '10000101', '11100111', '10000101', '10100111']

# 16进制展示
bb=[ hex(item) for item in b]
print(bb)

常量

# 恒定不变的量,一旦赋值,后期不能变化
    -python 是有---》强制--》约定俗称的--》全大写的是常量
    -Django,flask配置信息---》其实就是常量

package main

import "fmt"

const school = "清华大学"

// ########## 常量 ##############
func main() {

    // 1 定义常量
    //const hobby string="篮球"
    const hobby = "篮球"
    fmt.Println(hobby)
    // 2 作用域范围
    var school string = "xxx"
    school = "上海交大"
    fmt.Println(school)

}

func demo01() {
    fmt.Println(school)
}

函数

// 1 函数定义规范
func 函数名(形参 形参类型,形参 形参类型)返回值类型{
    函数体
    return 返回值
}

package main

import "fmt"

// ########## 函数 ##############

func main() {
    // 1 无参数无返回值
    //test01()

    //2 一个参数,无返回值
    //test02(12)

    //3 多个相同类型参数,无返回值
    //test03(11, 12)

    // 4 多个参数,一个返回值
    //res := test04(11, 22)
    //fmt.Println(res)

    // 5 多个参数,多个返回值
    //var a, ok = test05(3, 4)
    //if ok {
    //    fmt.Println(a)
    //}

    // 6 匿名函数
    //test06()

    // 7 把函数赋值给变量,通过变量调用函数
    //res:=f(3,4)
    //var xx = f
    //res := xx(3, 4)
    //fmt.Println(res)

    //  9 空白符-->函数有多个返回值,只想要某一个或几个
    //_, ok := test05(4, 5) // python 中也可以用  _  接收返回值,但是python 中  _ 是一个变量
    ////a := test05(4, 5) // 有几个返回值必须用几个来接收
    //fmt.Println(ok)
    //
    //// 11 函数是一等公民---》函数当返回值返回--->函数内的内层函数
    //var f func() = test11()
    //fmt.Println(f)
    //f()

    // 12 闭包--》跟语言无关---》定义在函数内部  对外部作用域有引用
    //a := 99 // 值类型--》传到函数中,相当于复制了一份,相互脱离了
    //res := test12(a)
    //fmt.Println(res)
    //a = 199 // 闭包函数是对外部作用域的引用
    //res()

    // 14 函数 变量 当参数传入到函数中--->了解
    //func test14(a int,f func(i int))  {
    //    f(a)
    //}
    //var f= func(a int) {
    //    fmt.Println("数字+99 是",a+99)
    //}
    //test14(99,f)

    test14(99, func(i int) {
        fmt.Println("数字+99 是", i+99)
    })
    // 控制台打印什么?

}

// 1 无参数无返回值
func test01() {
    fmt.Println("我是test")
}

// 2 一个参数无返回值
func test02(a int8) {
    fmt.Println("我是test02", a)
}

// 3 多个同类型参数无返回值
// func test03(i int, i2 int) {
func test03(i, i2 int) { // 简略写法
    fmt.Println(i + i2)
}

// 4 多个参数,一个返回值
func test04(i int, i2 int) int {
    return i + i2
}

// 5 多个参数,多个返回值
func test05(i int, i2 int) (int, bool) {
    return i + i2, false
}

// 6 函数高级 匿名函数---》没有函数名的函数-->一般定义在函数内部-->函数内部定义的函数不能有名字(只能定义成匿名函数)
func test06() {
    fmt.Println("test06--start")
    // 定义匿名函数--->如果不赋值给变量,就必须调用执行
    func() {
        fmt.Println("inner")
    }()
    fmt.Println("test06--end")
}

// 7 go 中函数是一等公民(头等函数)---》函数可以赋值给变量---》python中函数是一等公民---》go中函数是一种类型
// 可以存储在变量中。 可以作为参数传递给函数。 可以作为函数的返回值
// 类型推导
//var f =func (a,b int)int  {
//    return a+b
//}

// 完整定义
var f = func(a, b int) int {
    return a + b
}

// 8 函数也是一种类型,函数的参数和返回值都是类型的一部分

// 9 空白符-->函数有多个返回值,只想要某一个或几个

// 10 命名返回值
func test10(a, b int) (s int, ok bool) {
    //return a+b,true
    // s 和ok 不需要定义了
    s = a + b
    ok = true
    //return s,ok
    return
}

// 11 函数是一等公民---》函数当返回值返回
func test11() func() {
    a := func() {
        fmt.Println("我是匿名内部函数")
    }
    return a
}

// 12 闭包--》跟语言无关---》定义在函数内部  对外部作用域有引用
func test12(x int) func() {
    x = 666
    // f是个闭包函数
    f := func() {
        fmt.Println("我是匿名内部函数", x)
    }
    return f
}

// 13 装饰器--》设计模式--》23 种--》单例,工厂---》
// go 中 也有装饰器的用法---》但是没有装饰器的语法糖--》go实现装饰器
// go实现装饰器--》统计函数运行时间

// 14 函数 变量 当参数传入到函数中--->了解
func test14(a int, f func(i int)) {
    f(a)
}

// 15 奇葩写法
func test15(f1 func(int) int, f2 MyFunc) (func(), func(int) int) {
    // f1 参数:func(int)int  类型
    // f2参数:func(string)(int,int)类型

    // 返回值 func()
    //返回值 func(int)int
    return func() {

    }, func(i int) int { return 0 }
}

// 16 给类型重命名
type MyFunc func(string) (int, int)

包用于组织 Go 源代码,提供了更好的可重用性与可读性

# 包规范
// 1 包内部的函数,变量。。大写字母开头表示导出---》别的包才可以用
// 2 在同一个文件夹下,包名必须一致,建议包名就是文件夹名
// 3 在同一个包下,所有变量和函数,方法。。。 都认为是在同一个go文件中
// 4 使用包,导入使用 ---》导入到包名这一层--》包名.导出字段用即可
// 5 导入包:import "go_day02/common"
    包名.方法名使用
    
// 6 导入包并重命名: import lqz "go_day02/common/v1"
    lqz.方法使用
// 7 一次导入多个包
import (
    fm "fmt"
    "go_day02/global"
)

 

标签:常量,int,fmt,var,Println,函数,func,GO,变量
From: https://www.cnblogs.com/wzh366/p/18112848

相关文章

  • Go_ if else语句 ,,循环,,switch,,数组
    if-else语句//if语法if定义变量;条件{}elseif条件{}else{}//输入分数,打印成绩等级packagemainimport"fmt"//iffuncmain(){ //1接收用户输入 varscoreint=0 fmt.Print("请输入分数:") fmt.Scan(&score) showLevel(score)......
  • django原生FBV
    1,django原生FBVurls.py#1,django原生FBVpath('origin/',FBV.view),path('origin2/<str:id>/',FBV.view_detail)view.pyimportjsonfromdjango.db.modelsimportQfromdjango.views.decorators.csrfimportcsrf_exempt,csrf_pro......
  • 30-ORM:CURD神器GORM包介绍及实战
      目前,GitHub上star数最多的是GORM,它也是当前Go项目中使用最多的ORM。 GORM基础知识介绍GORM是Go语言的ORM包,功能强大,调用方便。像腾讯、华为、阿里这样的大厂,都在使用GORM来构建企业级的应用。 功能全。使用ORM操作数据库的接口,GORM都有,可以满足我们开发中对数据库......
  • 2024-04-03:用go语言,在一个小城市里,有 m 个房子排成一排, 你需要给每个房子涂上 n 种颜
    2024-04-03:用go语言,在一个小城市里,有m个房子排成一排,你需要给每个房子涂上n种颜色之一(颜色编号为1到n),有的房子去年夏天已经涂过颜色了,所以这些房子不可以被重新涂色,我们将连续相同颜色尽可能多的房子称为一个街区。比方说houses=[1,2,2,3,3,2,1,1],它包含5个街......
  • Rust中声明变量的方式
    letmutguess=String::new();在Rust中,一般使用let声明变量,比如letapples=5;这行代码声明了一个名为apples的变量,并绑定其变量值为5,在Rust中变量默认是不可变的immutable。意味着一旦给变量赋值后,其值不会发生改变。需要声明可变的变量,需要在变量名之前加mut,比如letappl......
  • Linux系统下安装MongoDB的详细步骤
    一、概述MongoDB由C++语言编写,是一个介于关系型数据库和非关系型数据之间的产品,是非关系型数据库中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似与json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语......
  • golang—踩坑之切片
    1.记录一次切片引用错误,希望大家不要踩坑,用来惊醒自己!修改之前:import("context""encoding/json""feishu/global""feishu/structure""feishu/utils""fmt""github.com/gin-gonic/gin"......
  • 记录解决QT环境变量、qwt环境搭建、cannot load QT5core.dll错误、TreeWidget与TabWid
    一、配置QT环境变量:依次打开:设置->系统->关于->高级系统设置->环境变量->系统变量(s)->Path->编辑,将QT安装目录中以下文件路径复制粘贴至Path中:D:\BaiDuWangPan\SoftWare\QT_551\5.5\mingw492_32\binD:\BaiDuWangPan\SoftWare\QT_551\Tools\mingw492_32\bin相关解决方法可借鉴......
  • js 可以间接地“声明”或初始化变量的其他方式(除了直接使用var、let和const)
    在JavaScript中,除了直接使用var、let和const关键字来声明变量外,还有一些其他方式可以间接地“声明”或初始化变量。以下是一些示例:函数参数:当定义一个函数时,函数的参数列表中的每个参数实际上都会成为该函数作用域内的变量。这些变量在函数被调用时会被自动声明和初始化。func......
  • Javascript 变量类型 Object 和 Function 讲解
    在JavaScript中,Object 和 Function 是两种非常重要的类型,但它们之间也有一些关键的区别和联系。Object类型在JavaScript中,几乎所有的事物都是对象,包括原始值(如数字和字符串)的包装对象、数组、函数,以及使用字面量语法或构造函数创建的对象实例。对象是一个复合值,它可以包......