TestsTested | ✗ |
LangLanguage | SwiftSwift |
License | Custom |
ReleasedLast Release | Sep 2015 |
SPMSupports SPM | ✗ |
Maintained by Josh Baker.
Bring some of the more powerful features of Go to your iOS / Swift project such as channels, goroutines, and defers.
Built for Swift 2.0 - For Swift 1.2 support use v0.1.4 or earlier.
Note that the following example and all of the examples in the examples
directory originated from http://gobyexample.com and Mark McGranaghan
Go
package main
import "fmt"
func main() {
jobs := make(chan int, 5)
done := make(chan bool)
go func() {
for {
j, more := <-jobs
if more {
fmt.Println("received job", j)
} else {
fmt.Println("received all jobs")
done <- true
return
}
}
}()
for j := 1; j <= 3; j++ {
jobs <- j
fmt.Println("sent job", j)
}
close(jobs)
fmt.Println("sent all jobs")
<-done
}
Swift
func main() {
var jobs = Chan<Int>(5)
var done = Chan<Bool>()
go {
for ;; {
var (j, more) = <?jobs
if more {
println("received job \(j!)")
} else {
println("received all jobs")
done <- true
return
}
}
}
for var j = 1; j <= 3; j++ {
jobs <- j
println("sent job \(j)")
}
close(jobs)
println("sent all jobs")
<-done
}
Each example has a .swift
and .go
file that contain the same logic.
./run.sh examples/goroutines.swift
./run.sh examples/goroutines.go
Copy the GoSwift\go.swift
file into your project.
There is no need for import GoSwift
when manually installing.
Josh Baker @tidwall
The GoSwift source code available under the MIT License.
The Go source code in the examples
directory is copyright Mark McGranaghan and licensed under a Creative Commons Attribution 3.0 Unported License.
The Swift version of the example code is by Josh Baker