GPT问题记录

如何遍历切片

1.for循环

package main

import "fmt"

func main(){
    s := []int{1,2,3,4}
    for i := 0; i < len(s); i++{
        fmt.Printf("s[%d]=%d\n",i,s[i])
    }
}

运行结果

GPT问题记录_第1张图片

 

2.range 关键字

package main

import "fmt"

func main() {
    s := []int{1,2,3,4,5}
    for index, value := range s {
        fmt.Printf("s[%d]=%d\n",index,value)
    }
}

运行结果

GPT问题记录_第2张图片

如何对切片进行切割

package main

import "fmt"

func main() {
    s := []int{1,2,3,4,5}
    fmt.Println(s[:2])
    fmt.Println(s[2:])
    fmt.Println(s[1:3])
    fmt.Println(s[:len(s)/2])
    fmt.Println(s[len(s)/2:])
}

GPT问题记录_第3张图片

 s[1:4] 从索引下标1开始到下标为4但是不包括4,也就是索引下标为1,2,3的元素

 开启两个线程,分别计算切片的前半部分的和和后半部分的和并显示结果

package main

import "fmt"

func print(s []int, ch chan int) {
	sum := 0
	for _, value := range s {
		sum += value
	}
	ch <- sum
}

func main() {
	s := []int{1,2,3,4,5}
	ch := make(chan int)
	go print(s[:len(s)/2],ch)
	go print(s[len(s)/2:],ch)
	// 关闭通道
    defer close(ch)
	x, y := <-ch,<-ch
	fmt.Printf("%d + %d = %d",x,y,x+y)
}

运行结果

GPT问题记录_第4张图片

 GPT建议

package main

import "fmt"

func main() {
	ch := make(chan int)
	ch <- -1
	fmt.Println(<-ch)
	ch <- 5
	fmt.Println(<-ch)
	
}

如果通道不带缓冲,发送方会阻塞直到接收方从通道中接收了值。如果通道带缓冲,发送方则会阻塞直到发送的值被拷贝到缓冲区内;如果缓冲区已满,则意味着需要等待直到某个接收方获取到一个值。接收方在有值可以接收之前会一直阻塞。

GPT问题记录_第5张图片

 GPT问题记录_第6张图片

 

 

你可能感兴趣的:(GPT问题收录,gpt,java,开发语言)