加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

004.golang 常量与运算符

发布时间:2020-12-16 19:18:39 所属栏目:大数据 来源:网络整理
导读:常量的定义 常量的值在编译时就已经确定 常量的定义格式与变量基本相同 等号右侧必须是常量或者常量表达式 常量表达式中的函数必须是内置函数 package main import "fmt" const a int = 1 const b = "B" const ( c = "c" d = len (c) e = d * 2 ) const f,g,

常量的定义

  • 常量的值在编译时就已经确定
  • 常量的定义格式与变量基本相同
  • 等号右侧必须是常量或者常量表达式
  • 常量表达式中的函数必须是内置函数
package main

import "fmt"

const a int = 1
const b = "B"
const (
    c = "c"
    d = len(c)
    e = d * 2
)
const f,g,h,i = 1,true,"h",len("love")

const (
    j,k,l,m = 1,"a",float64(len(k)) * 100.123
)

func main() {
    fmt.Println(a,b,c,d,e,f,i,j,m)
}

常量的初始化规则与枚举

  • 在定义常量组时,如果不提供初始值,则表示将使用上行的表达式
  • 使用相同的表达式不代表具有相同的值
  • iota是常量的计数器,从0开始,组中每定义1个常量自动递增1
  • 通过初始化规则与iota可以达到枚举的效果
  • 每遇到一个const关键字,iota就会重置为0
package main

import "fmt"

const (
    a = "a"
    b
    c
    d
    e = iota
    f
    g
)
const (
    h = iota
    i
    j
)

func main() {
    fmt.Println(a,j)
}
package main

import "fmt"

const ( _ = iota KB float64 = 1 << (iota * 10) MB GB TB PB EB ZB YB ) func main() { fmt.Println(KB) fmt.Println(MB) fmt.Println(GB) fmt.Println(TB) fmt.Println(PB) fmt.Println(EB) fmt.Println(ZB) fmt.Println(YB) } 

运算符

Go中的运算符均是从左至右结合

优先级(从高到低)

^      !                                 (一元运算符)
* /    %    <<    >>    &      &^
+      -     |      ^                    (二元运算符)
== != < <= >= >
<-                                       (专门用于channel)
&&
||
package main

import "fmt"

/* 6: 0110 11: 1011 --------- & 0010 只有都是1的时候,才是1 | 1111 只要有一个是1,就是1 ^ 1101 只有一个是1的时候,才是1 &^ 0100 第二个参数为1的,把第一个参数的改为0 */
func main() {
    /* 正整数的补码是其二进制表示,与原码相同; 负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1 按位取反 0 0010 取补码 0 0010 按位取反 1 1101 这个也是补码, 减去1 1 1100 再取反, 1 0011 但符号位不变 得 -3 */
    fmt.Println(^2)
    fmt.Println(!true)         //false
    fmt.Println(1 << 10)       //1024
    fmt.Println(1 << 10 >> 10) //1024
    fmt.Println(6 & 11)        //0010
    fmt.Println(6 | 11)        //1111
    fmt.Println(6 ^ 11)        //1101
    fmt.Println(6 &^ 11)       //0100
}

指针

Go虽然保留了指针,但与其它编程语言不同的是,在Go当中不
支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针
目标对象的成员

  • 操作符”&”取变量地址,使用”*”通过指针间接访问目标对象
  • 默认值为 nil 而非 NULL
package main

import "fmt"

func main() {
    a := 1
    var p *int = &a

    fmt.Println(p)
    fmt.Println(*p)
}

递增递减语句

在Go当中,++ 与 – 是作为语句而并不是作为表达式

a := 1
a++
a--
 //这是不允许的,只能作为语句,表达式不可以 //b := a++

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读