易山博客地址java
全部的代碼都在這裏了 ↑,內附了github地址,能夠直接下載!node
github地址: 點擊跳轉代碼下載(這裏直接跳轉也能夠)python
package main
import "fmt"
// 他能夠自動檢測類型
// 外部聲明不能夠使用 := 必須聲明var
var (
aa = true
bb = 123
cc = "string"
)
func variableZeroValue () {
// 能夠這麼聲明變量
var a int
var s string
fmt.Printf("%d %q\n",a,s)
}
func variableInitValue() {
// 也能夠這樣
var a,b int = 3,4
var s string = "abc"
fmt.Println(a,b,s)
}
func variableTypeDeduction() {
// 也能夠這樣
var a,b,c,d = 3,4,true,"def"
var s = "abc"
fmt.Println(a,b,c,d,s)
}
func variableShorter() {
// 也能夠這樣
a,b,c,d := 1,2,true,"string"
fmt.Println(a,b,c,d)
}
func main() {
// 主函數操做以下
fmt.Println("Hello, World!")
variableZeroValue()
variableInitValue()
variableTypeDeduction()
variableShorter()
}
vscode 打印以下:
C:go\src\google_go>go run basic.go
Hello, World!
0 ""
3 4 abc
3 4 true def abc
1 2 true string
複製代碼
package main
import "fmt"
// 內置變量類型
// bool , string
// (u)int(整形),(u)int8,(u)int16,(u)int32(4字節),(u)int64,uintptr
// byte(8字節) , rune(32字節)
// float32,float64(浮點數) ,complex64,complex128(複數)
// 強制類型轉換(都是強制類型轉換)
// var a,b int = 3,4
// var c int
// c = int(math.Sqrt(float64(a*a+b*b)))
// 枚舉
func enums() {
// iota 自增
const (
java = iota
javaScript
g0
)
fmt.Println(java,javaScript,g0)
const (
b = 1 << (10 * iota)
kb
cb
)
fmt.Println(b,kb,cb)
}
// 常量
func main() {
const name = "shan_yi"
const age = 22
fmt.Println(name,age)
enums()
}
vscode 控制檯打印
C:\go\src\google_go>go run 2typeof.go
shan_yi 22
0 1 2
1 1024 1048576
複製代碼
package main
import "fmt"
// if else
func main() {
aa := 1
bb := 2
// 第一種寫法
// err := true
// if err {
// fmt.Println(aa)
// } else {
// fmt.Println(bb)
// }
// 第二種寫法(寫法比較傻haha。。。)
if err := true; err {
fmt.Println(aa)
} else {
fmt.Println(bb)
}
}
複製代碼
package main
import "fmt"
// 咱們不須要寫break;
// 系統自動break;
func main() {
a := 60
call := ""
switch {
case a < 60:
call = "E"
case a < 70:
call = "D"
case a < 80:
call = "C"
case a < 90:
call = "B"
case a < 100:
call = "A"
default:
panic(fmt.Sprintf("Error: %d", a))
}
fmt.Println(call)
}
// D
複製代碼
package main
import "fmt"
func main() {
num := 0
for i:=0;i<=100;i++{
num += i
}
fmt.Println(num)
}
// 5050
複製代碼
package main
import (
"fmt"
"math"
"reflect"
"runtime"
)
func eval(a , b int, op string) int {
switch op {
case "+":
return a + b
case "-":
return a - b
default:
panic("error:" + op)
}
}
func apply(op func(int, int) int, a, b int) int {
p := reflect.ValueOf(op).Pointer()
opName := runtime.FuncForPC(p).Name()
fmt.Printf("call function %s with args (%d, %d)",opName,a,b)
return op(a, b)
}
func div(a,b int) (c,d int) {
return a / b, a % b
}
func pow(a,b int) int {
return int(math.Pow(float64(a), float64(b)))
}
// 可變參數
func sum(numbers ...int) int {
s := 0
for i := range numbers {
s += numbers[i]
}
return s
}
func main() {
fmt.Println(eval(1,2,"+"))
c, d := div(23,5)
fmt.Println(c, d)
fmt.Println(apply(pow,3,4))
fmt.Println(sum(1,2,3,4,5))
}
複製代碼
package main
import "fmt"
// 值傳遞 沒有引用傳遞 -> 指針修改
//func swap(a,b *int) {
// *b, *a = *a, *b
//}
//
//func main() {
// a,b := 3,4
// swap(&a, &b)
// fmt.Println(a,b)
//}
// 換一種方式交換兩個的值
func swap(a,b int) (int, int) {
return b, a
}
func main() {
a,b := 3,4
a,b = swap(a, b)
fmt.Println(a,b)
}
複製代碼
package main
import "fmt"
func printArray(arr [5]int) {
// 值類型數組
for i, v:= range arr{
fmt.Println(i,v)
}
}
func main() {
// 數組值類型
var arr1 [5]int
arr2 := [3]int{1,2,3}
// ... 編譯器來決定個數
arr3 := [...]int{2,4,6,8,10}
fmt.Println(arr1,arr2,arr3)
// 二維數組
// 4個數組,5個內容
var grid [4][5]int
fmt.Println(grid)
//[0 0 0 0 0] [1 2 3] [2 4 6 8 10]
//[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]
// 測試循環
//for i:= 0; i < len(arr3);i++ {
// fmt.Println(arr3[i])
//}
//2
//4
//6
//8
//10
// or
// range 獲取數組下標
// 能夠經過 _ 省略變量
// 任何地方均可以 使用 _ 省略變量
//for i, v:= range arr3{
// fmt.Println(i,v)
//}
//0 2
//1 4
//2 6
//3 8
//4 10
// range
// 1. 美觀,意義明確
// 2. c++:沒有相似功能
// 3. java/python:只能for each value,不能同時得到 i,v
printArray(arr1)
}
複製代碼
package main
import "fmt"
func updateSlice(arr []int) {
arr[0] = 100
}
func main() {
arr := [...]int{0,1,2,3,4,5,6,7}
fmt.Println("dataArray:",arr[2:6])
//dataArray: [2 3 4 5]
fmt.Println("dataArray:",arr[2:])
//dataArray: [2 3 4 5 6 7]
fmt.Println("dataArray:",arr[:6])
//dataArray: [0 1 2 3 4 5]
fmt.Println("dataArray:",arr[:])
//dataArray: [0 1 2 3 4 5 6 7]
//Reslice
a1 := arr[2:]
updateSlice(a1)
fmt.Println(a1)
//[100 3 4 5 6 7]
fmt.Println(arr)
//[0 1 100 3 4 5 6 7]
// slice 底層view 向後擴展
// [3,6]
// [3,4]
//arr := o,1,2,3,4,5,6,7
arr1 := append(a1, 8)
arr2 := append(arr1, 9)
arr3 := append(arr2, 10)
fmt.Println(arr1,arr2,arr3,arr)
//[100 3 4 5 6 7 8] [100 3 4 5 6 7 8 9] [100 3 4 5 6 7 8 9 10] [0 1 100 3 4 5 6 7]
}
複製代碼
package main
import "fmt"
func printSlice(s []int) {
fmt.Println(len(s),cap(s))
}
func main() {
var s []int // zero value for slice is nil
for i:= 0;i<10;i++{
s = append(s, 2*i+1)
}
fmt.Println(s)
//[1 3 5 7 9 11 13 15 17 19]
printSlice(s)
//10 16
s1 := make([]int,10,16)
printSlice(s1)
//10 16
copy(s1, s)
fmt.Println(s1)
//[1 3 5 7 9 11 13 15 17 19]
}
複製代碼
package main
import "fmt"
func main() {
m := map[string]string{
"name": "shan_Yi",
"age": "1997",
"sex": "男",
}
fmt.Println(m)
m2:=make(map[string]int) // empty map
var m3 map[string]int // nil
fmt.Println(m2,m3)
//map[] map[]
for k,v := range m {
fmt.Println(k,v)
}
// map hash map 無序
// 若是沒有存在key 則爲 zero value
if causeName, ok := m["colors"]; ok {
fmt.Println(causeName)
} else {
fmt.Println("key does not exist")
}
fmt.Println("delete values")
name, ok := m["name"]
fmt.Println(name,ok)
delete(m,"name")
name, ok = m["name"]
fmt.Println(name,ok)
// golang 控制檯
//map[age:1997 name:shan_Yi sex:男]
//map[] map[]
//name shan_Yi
//age 1997
//sex 男
//key does not exist
//delete values
//shan_Yi true
// false
}
複製代碼
package main
import "fmt"
func lengthOfNonRepeatingSubStr(s string) int {
// byte 英文字符 阿斯克碼
lastOccurred := make(map[byte]int)
start := 0
maxLength := 0
for i,ch := range []byte(s) {
if lastI,ok := lastOccurred[ch]; ok && lastI >= start {
start = lastI + 1
}
if i - start + 1 > maxLength {
maxLength = i - start + 1
}
lastOccurred[ch] = i
}
return maxLength
}
func main() {
// 尋找最長不含有重複字符的子串
fmt.Println(lengthOfNonRepeatingSubStr("abcabcbb"))
fmt.Println(lengthOfNonRepeatingSubStr("bbbbbbbb"))
fmt.Println(lengthOfNonRepeatingSubStr("pwwkew"))
fmt.Println(lengthOfNonRepeatingSubStr(""))
fmt.Println(lengthOfNonRepeatingSubStr("b"))
fmt.Println(lengthOfNonRepeatingSubStr("abcdefg"))
fmt.Println(lengthOfNonRepeatingSubStr("易山博客測試"))
fmt.Println(lengthOfNonRepeatingSubStr("一一一二"))
}
golang
3
1
3
0
1
7
11
5
複製代碼
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
s:= "hello易山" // UTF-8 english1 china3
for _,b := range []byte(s) {
fmt.Printf("%X " , b)
}
fmt.Println()
for i,ch := range s { // ch is a rune
fmt.Printf("(%d %X)",i,ch)
}
fmt.Println()
fmt.Println(utf8.RuneCountInString(s))
//68 65 6C 6C 6F E6 98 93 E5 B1 B1
//(0 68)(1 65)(2 6C)(3 6C)(4 6F)(5 6613)(8 5C71)
//7
}
複製代碼
go 語言僅支持封裝,不支持繼承和多態c++
package main
import "fmt"
type treeNoe struct {
value int
left,right *treeNoe
}
func (node treeNoe) print() {
fmt.Print(node.value, " ")
}
func (node *treeNoe) setValue(value int) {
node.value = value
}
func (node *treeNoe) traverse() {
if node == nil {
return
}
// 中序便利
node.left.traverse()
node.print()
node.right.traverse()
}
// 公創函數
func createNode(value int) *treeNoe {
return &treeNoe{value:value}
}
func main() {
var root treeNoe
root = treeNoe{value:3}
root.left = &treeNoe{}
root.right = &treeNoe{5, nil,nil}
root.right.left = new(treeNoe)
root.left.right = createNode(2)
nodes := []treeNoe{
{value:3},
{},
{6,nil,nil},
}
fmt.Println(root,"\n",nodes)
root.right.left.setValue(4)
//root.right.left.print()
//fmt.Println()
//
//Proot := &root
//Proot.print()
//Proot.setValue(100)
//Proot.print()
root.traverse()
}
複製代碼
package main
import "fmt"
func adder() func(int) int {
sum := 0
return func(v int) int {
sum += v
return sum
}
}
type iAdder func(int) (int, iAdder) func adder2(base int) iAdder {
return func(v int) (int, iAdder) {
return base + v, adder2(base + v)
}
}
func main() {
//a := adder()
//for i:=0;i<10;i++{
// fmt.Println(a(i))
//}
a := adder2(0)
for i:=0;i<10;i++ {
var s int
s, a = a(i)
fmt.Printf("%d\n", i, s)
}
}
複製代碼
這裏就放一張我在 力扣 作的解答題git
當咱們啓動服務的時候就是這樣的(正確的)github
錯誤的golang
Blog: 易山博客編程
版權:本文僅限學習,不涉及商業學習(轉載需註明出處)數組
出處:易山博客 URL:https:ladies.ren/服務器