
package main
import "fmt"
func addBinary(a string, b string) string {
var aList []byte
for i:=len(a)-1;i>=0;i--{
aList = append(aList,a[i])
}
var bList []byte
for i:=len(b)-1;i>=0;i--{
bList = append(bList,b[i])
}
var i,j,av,bv,res,carry int
var resList []int
for i<len(aList)||j<len(bList){
av =0
if i<len(aList){
av =int(aList[i]-'0')
i++
}
bv =0
if j<len(bList){
bv =int(bList[j]-'0')
j++
}
res = av+bv+carry
carry =res/2
res = res%2
resList =append(resList,res)
}
if carry==1 {
resList =append(resList,carry)
}
var s string
for i =0;i<len(resList);i++{
s =fmt.Sprintf("%d%s",resList[i],s)
}
return s
}
func main() {
fmt.Println(addBinary("11","1"))//100
fmt.Println(addBinary("1010","1011"))//10101
fmt.Println(addBinary("1111","1111"))//10101
}

package main
import (
"fmt"
)
func addBinary(a string, b string) string {
i := len(a)-1
j := len(b)-1
var av ,bv ,carry int
var res string
for i>=0||j>=0{
if i>=0{
av =int(a[i]-'0')
i--
}else {
av =0
}
if j>=0{
bv =int(b[j]-'0')
j--
}else {
bv =0
}
r := av+bv+carry
carry =r/2
r = r%2
res =fmt.Sprintf("%d%s",r,res)
}
if carry==1 {
res =fmt.Sprintf("%d%s",carry,res)
}
return res
}
func main() {
fmt.Println(addBinary("11","1"))//100
fmt.Println(addBinary("1010","1011"))//10101
fmt.Println(addBinary("1111","1111"))//10101
}
