用go语言写一个程序实现字符串反转
时间: 2023-12-29 13:46:45 浏览: 72
好的,以下是用Go语言实现字符串反转的程序:
```go
package main
import "fmt"
func reverseString(str string) string {
runes := []rune(str)
for i, j := 0, len(runes)-1; i < len(runes)/2; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
func main() {
str := "Hello, world!"
fmt.Println(reverseString(str))
}
```
代码解释:
1. `reverseString` 函数接收一个字符串参数 `str`,并返回反转后的字符串。
2. 将 `str` 转换为 rune 切片,以便能够修改其元素(字符串是不可变的)。
3. 使用双指针法,从字符串的两端开始,交换对应位置的字符,直到指针相遇。
4. 将 rune 切片转换回字符串,并返回。
运行结果:
```
!dlrow ,olleH
```
相关问题
编写golang程序实现字符串反转,例如给定字符串 "string",输出结果应该为 "gnirts"
可以通过遍历字符串,将每个字符倒序添加到一个新的字符串中实现字符串反转。以下是一个简单的golang程序实现:
```go
package main
import "fmt"
func reverseString(s string) string {
var reversed string
for i := len(s)-1; i >= 0; i-- {
reversed += string(s[i])
}
return reversed
}
func main() {
input := "string"
output := reverseString(input)
fmt.Println(output) // gnirts
}
```
该程序定义了一个 `reverseString` 函数,该函数接受一个字符串作为输入,并返回反转后的字符串。在 `reverseString` 函数中,我们使用一个 for 循环遍历原始字符串并将其倒序添加到一个新的字符串中。最后,我们从 `main` 函数调用 `reverseString` 函数并打印输出结果。
使用go语言实现一个串口modbus的采集程序
好的,我可以为您提供一个简单的串口modbus采集程序的go语言实现。
首先,您需要安装go语言并了解基本的串口通信和modbus协议。
以下是一个示例程序,它使用github.com/goburrow/modbus库进行modbus通信和github.com/tarm/serial库进行串口通信:
```go
package main
import (
"fmt"
"log"
"time"
"github.com/goburrow/modbus"
"github.com/tarm/serial"
)
func main() {
// 打开串口
c := &serial.Config{Name: "COM1", Baud: 9600}
s, err := serial.OpenPort(c)
if err != nil {
log.Fatal(err)
}
// 创建modbus客户端
handler := modbus.NewRTUClientHandler(s)
handler.BaudRate = 9600
handler.DataBits = 8
handler.Parity = "N"
handler.StopBits = 1
handler.Timeout = 100 * time.Millisecond
client := modbus.NewClient(handler)
// 读取modbus数据
results, err := client.ReadHoldingRegisters(1, 0, 10)
if err != nil {
log.Fatal(err)
}
// 打印结果
fmt.Println(results)
}
```
在此示例中,我们使用COM1端口与串口通信,并使用modbus协议读取从设备的寄存器1开始的10个寄存器的值。您可以根据自己的需求修改这些值。