GO-变量、常量以及与其他语言的差异01

编写测试程序

1.源码文件以_ test结尾: xxx test. go
2.测试方法名以Test开头: func TestXXX(t *testing.T) …}

package try_test

import "testing"

func TestName(t *testing.T) {
    
    
   t.Log("My first try")
}

实现Fibonacci数列

1,1,2,3,5,8,13,

package fib

import (
   "fmt"
   "testing"
)

func TestFibList(t *testing.T) {
    
    
   //var a = 1;
   //var b = 1;
   var (
      a int = 1;
      //b int = 1;
      b   = 1; // 俩个类型放一起,go有类型推断能力
   )
   /*a := 1
    b := 1*/ // 这样声明也ok
   fmt.Print(a)
   for i := 0; i < 5; i++ {
    
    
      fmt.Print(" ", b)
      tmp := a
      a = b
      b = tmp + a
   }
   fmt.Println()
}
package fib

import (
   "testing"
)

func TestFibList(t *testing.T) {
    
    
   //var a = 1;
   //var b = 1;
   var (
      a int = 1;
      //b int = 1;
      b   = 1; // 俩个类型放一起,go有类型推断能力
   )
   /*a := 1
   b := 1*/ // 这样声明也ok
   //fmt.Print(a)
   t.Log(a)
   for i := 0; i < 5; i++ {
    
    
      //fmt.Print(" ", b)
      t.Log(b)
      tmp := a
      a = b
      b = tmp + a
   }
   //fmt.Println()
}

变量赋值

与其他主要编程语言的差异

  • 赋值可以进行自动类型推断
  • 在一个赋值语句中可以对多个变量进行同时赋值
// 交换值2种写法
func TestExchange(t *testing.T) {
    
    
   a:=1
   b:=2
   //tmp:=a
   //a=b
   //b=tmp
   a,b=b,a
   t.Log(a, b)
}

常量定义

在这里插入图片描述

package constant_test

import "testing"

const (
   Monday = 1 + iota
   Tuesday
   Wednesday
)

func TestConstantTry(t *testing.T) {
    
    
   t.Log(Monday, Tuesday, Wednesday)
}

Result:

=== RUN   TestConstantTry
    constant_try_test.go:12: 1 2 3
--- PASS: TestConstantTry (0.00s)
PASS

位与运算符(&)

const (
   Readable = 1 << iota
   Writable
   Executable
)
/**
4.位与运算符(&)
运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。
比如:129&128.
129转换成二进制就是10000001,128转换成二进制就是10000000。从高位开始比较得到,得到10000000,即128.
 */
func TestConstantTry1(t *testing.T) {
    
    
   t.Log(Readable, Writable, Executable)
   a := 1 // 0001
   t.Log(a&Readable == Readable,a&Writable == Writable,a&Executable==Executable)
   b := 7 // 0111
   t.Log(b&Readable == Readable,b&Writable==Writable,b&Executable==Executable)

}

Result:

=== RUN   TestConstantTry1
    constant_try_test.go:18: 1 2 4
    constant_try_test.go:20: true false false
    constant_try_test.go:22: true true true
--- PASS: TestConstantTry1 (0.00s)
PASS

PS:学习笔记,侵删!

猜你喜欢

转载自blog.csdn.net/qq_31686241/article/details/126376183
今日推荐